raver119
320924278d
Legacy API changes ( #441 )
...
* initial commit
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* another initial commit
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* another initial commit
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* one more initial commit
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* next step
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* next step
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* next step
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* next step
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* Refactored buffer() and shapeInfo() methods usage with NDArray class.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopt Graph class methods to use const shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopt choose op to use constant shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopt where op shape method to use constant shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopt lstsq op to use constant empty shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopt matrix_diag_part op shape routine to use constant shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopt determinant ops to use constant shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopt mean_pairwssqerr_loss ops to use constant shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopt ops shape methods.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopt shape methods for loss ops.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopt log_loss op shape method.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopt shape methods for ops.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopt dilation2d ops shape methods.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopted deconv2d ops shape methods.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopted dynamicRNN op shape method.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopted shape methods for ops.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopted shape methods for lstm layer ops.
Signed-off-by: shugeo <sgazeos@gmail.com>
* few updates
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* first cuda tweak
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* Adopt constant shapes for sconv2d ops.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopt constant shapes for gru ops.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopt constant shapes with shape methods for segment ops and so on.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopted constant shapes with unsorted_segment_* ops.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopted constant shapes with gamma op shape method.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopted shape methods of reduce_stddev ops.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopted shape methods for reduce_* ops.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopt shape method for squeeze op.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopt strided_slice shape method.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored concat op shape method to adopt constant shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopted shape method for mirror_pad op.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopted split op shape method.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopted tile ops shape methods.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Added const cast for mkldnn routines handles.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored logSoftMaxForVector_ routine to conform with proper data and shape pointer casts.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Cosmetic changes to proper usage of constant pointers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored a couple shape comparators for strides and addBias helpers to proper use data pointers with inplace option.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored depthToSpace helpers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored histogram helpers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored im2col helpers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored gather and gatherND helpers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed buffer usage on percentile helper.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed gather shape with helpers and range buffer usage.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed buffer usage with space to depth helpers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed buffer usage and constant shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed buffer usage with LUP decomposition>
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored onehot_ helper.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored pad and prefix to use constant shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactoed softmax helpers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed space to batch helpers to use buffers properly.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed stack and split helpers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed buffer usage with sparse to dense helpers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed buffer usage with mindistance_ helpers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed buffer usage with tile helper.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed constant shape usage.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed constant shape usage with legacy pairwise bool ops.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored a couple of methods to adopt constant shape usage.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed broadcasting with constant shape."
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed const usage with inplace reverse and constant shapes with legacy reduction.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored legacy ops with const shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored sort to adopt constant shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Corrected sort for constant shape usage.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed constant shape usage with special methods.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored Context to conform with constant shape usage.
Signed-off-by: shugeo <sgazeos@gmail.com>
* CUDA broadcasting headers
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* pairwise/indexreduce/random headers
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* Refactored native ops to adopt constant shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* legacy reduce3/scalar headers
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* Corrected pullRow signature and tests.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Corrected routines to proper use of constant shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored tests to use constant shapes properly.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored legacy ops tests to use constant shapes properly.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored buffer usage with NDArray tests.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed native ops tests.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed special concat routine.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed buffer usage with test.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed buffer usage with a test.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored TAD.h and tests.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored calcStrides* routines to use constant shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed miscelaneous errors with constant shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* NativeOps const changes
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* Corrected definitions for declared functions.
Signed-off-by: shugeo <sgazeos@gmail.com>
* NativeOps const changes
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* few more const changes
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* Fixed const shapes with shape routines.
Signed-off-by: shugeo <sgazeos@gmail.com>
* few more const changes
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* Fixed shape method for broadcastable case.
Signed-off-by: shugeo <sgazeos@gmail.com>
* few more const changes
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* xw_plus_b BP shape fn restored
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* Fixed signatures with broadcasting.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Repaired backprops shape methods for a set of operations.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored broadcast bool for cuda.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored methods for 3 args with const qualifier.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed a couple of kernel signatures for broadcasting.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed kernels signatures for const buffers and shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored pairwise methods to persistent buffers and shapes usage.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopt const to buffers and shapes with kernels.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopt const to buffers and shapes with scalar kernels.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored indexreduce kernels signatures to use const buffers and shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored pairwise kernels to adopt cons shapes and buffers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored pairwise bool kernels to adopt cons shapes and buffers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored random special ops to conform with const shapes and buffers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored native ops to conform with const shapes and buffers under cuda platform.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Cosmetical changes only.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed const shapes and buffers error.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Corrected start pos routine.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored methods to conform with const shapes and buffers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored helpers to use proper methods instead.
Signed-off-by: shugeo <sgazeos@gmail.com>
* bunch of changes
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* next bunch of changes
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* next bunch of changes
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* Fixed execScalar declaration.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed execScalar declaration.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Corrected const shape cases with sort and so on.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed const shapes for sort.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored kernel declarations to adopt const shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed kernels declarations to adopt const shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Corrected kernel declarations to adopt const shapes and buffers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed kernels declarations to adopt const shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed segment helpers kernels declarations and so on to adopt const shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed const shape usage with segment and solve helpers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed kernel declaration with adjustWeight helper.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed cuda implementations for constant shape helpers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopted const shape usage with kernels.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Adopted top_k kernels to use const shapes and buffers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Corrected kernels declarations to adopt const shapes with helpers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored NDArray definitions to adopt const shapes and buffers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed const shapes with image suppression helpers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Slight improvement with buffers.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored buffer usage.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored buffer usage with tests.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed const shape usage with definitions.
Signed-off-by: shugeo <sgazeos@gmail.com>
* minor updates on cpu side
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* Refactored const shape usage with ConstantDescritor and native ops with cuda platform.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored tear and tile kernels to adopt with const shapes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* softmax_loop fix
Signed-off-by: raver119 <raver119@gmail.com>
* update missing signature
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* softmax again
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* few more missing consts
Signed-off-by: raver119 <raver119@gmail.com>
* new methods updated
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
Co-authored-by: shugeo <sgazeos@gmail.com>
2020-05-09 08:06:14 +03:00
Yurii Shyrma
6aaca58506
Shyrma broadcast ( #302 )
...
* - profiling TrueBroadcastHelper
Signed-off-by: Yurii <iuriish@yahoo.com>
* - further improving of TrueBroadcastHelper
Signed-off-by: Yurii <iuriish@yahoo.com>
* - further profiling of broadcast op
Signed-off-by: Yurii <iuriish@yahoo.com>
* - implementation of broadcastShapeHelper which inserts unities in shapes of arrays to be broadcasted
Signed-off-by: Yurii <iuriish@yahoo.com>
* - provide additional method in ConstantShapeHelper class for deducing broadcast shapes with unities
Signed-off-by: Yurii <iuriish@yahoo.com>
* - provide new NativeOps helpers for usual and true broadcast methods
Signed-off-by: Yurii <iuriish@yahoo.com>
* enable bert profiler
Signed-off-by: raver119 <raver119@gmail.com>
* - delete unnessesary tests
Signed-off-by: Yurii <iuriish@yahoo.com>
Co-authored-by: raver119 <raver119@gmail.com>
2020-03-10 16:29:09 +03:00
raver119
63fa3c2ef3
libnd4j polishing ( #273 )
...
* initial set of include changes
Signed-off-by: raver119 <raver119@gmail.com>
* one more tweak
Signed-off-by: raver119 <raver119@gmail.com>
* few more rearrangements
Signed-off-by: raver119 <raver119@gmail.com>
* few more rearrangements
Signed-off-by: raver119 <raver119@gmail.com>
* few more rearrangements
Signed-off-by: raver119 <raver119@gmail.com>
* cuda includes rearrangements
Signed-off-by: raver119 <raver119@gmail.com>
* java update
Signed-off-by: raver119 <raver119@gmail.com>
* = namespace changed to sd
- few CMake variables renamed with SD_ prefix
Signed-off-by: raver119 <raver119@gmail.com>
* java update
Signed-off-by: raver119 <raver119@gmail.com>
* LoopKind minor fix
Signed-off-by: raver119 <raver119@gmail.com>
* few more changes
Signed-off-by: raver119 <raver119@gmail.com>
* few more changes
Signed-off-by: raver119 <raver119@gmail.com>
* few more changes
Signed-off-by: raver119 <raver119@gmail.com>
* sanitizer is optional now
Signed-off-by: raver119 <raver119@gmail.com>
* dev tests updated
Signed-off-by: raver119 <raver119@gmail.com>
* few more changes
Signed-off-by: raver119 <raver119@gmail.com>
* last update
Signed-off-by: raver119 <raver119@gmail.com>
* java update
Signed-off-by: raver119 <raver119@gmail.com>
2020-03-02 12:49:41 +03:00
shugeo
1bb3ae4b03
Shugeo unordered map ( #256 )
...
* Refactored usage of std::map to std::unordered_map instead.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Eliminated crash with wrong ShapeDescriptor hash.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Eliminated crash with TadDescriptor hash.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored Stash hash.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored hashes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored TadDescriptor hash and top_k mapping.
* Refactored hashes for ShapeDescriptor and TadDescriptor classes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Refactored hash for ConstantDescriptor and ShapeDescriptor classes.
Signed-off-by: shugeo <sgazeos@gmail.com>
* Fixed map using with cuda platform.
Signed-off-by: shugeo <sgazeos@gmail.com>
* - few rearrangements for hash functions
- shared openblas allowed
Signed-off-by: raver119 <raver119@gmail.com>
* exports
Signed-off-by: raver119 <raver119@gmail.com>
* exports
Signed-off-by: raver119 <raver119@gmail.com>
* Stash reverted to std::map
Signed-off-by: raver119@gmail.com <raver119@gmail.com>
* Added additional test.
Signed-off-by: shugeo <sgazeos@gmail.com>
* different maps for different compilers
Signed-off-by: raver119 <raver119@gmail.com>
* missing include
Signed-off-by: raver119 <raver119@gmail.com>
* fix the leak
Signed-off-by: raver119 <raver119@gmail.com>
Co-authored-by: raver119 <raver119@gmail.com>
2020-02-24 07:51:01 +03:00
Yurii Shyrma
029a69a835
Shyrma bn mkl bp ( #14 )
...
* - write code for new batchnorm backprop
Signed-off-by: Yurii <iuriish@yahoo.com>
* - testing batchnorm backprop
Signed-off-by: Yurii <iuriish@yahoo.com>
* - write code for batchnorm backprop based on mkl dnn api
Signed-off-by: Yurii <iuriish@yahoo.com>
* - testing and fixing bugs in batchnorm_bp mkl dnn
Signed-off-by: Yurii <iuriish@yahoo.com>
* - made corrections required by reviewer
Signed-off-by: Yurii <iuriish@yahoo.com>
* - change name in java wrapper for batchnorm op
Signed-off-by: Yurii <iuriish@yahoo.com>
2019-10-26 14:14:21 +03:00
raver119
7abc574eeb
Snapshot update ( #8194 )
...
* fix double consumption of rng on cpu
Signed-off-by: raver119 <raver119@gmail.com>
* Shyrma docs (#222 )
* - documenting and profiling matrix_set_diag cuda kernel
Signed-off-by: Yurii <yurii@skymind.io>
* - correct formula of pnorm pooling in cuda 2d/3d kernels
- remove helper matrix_diag which duplicates work of helper matrix_set_diag
Signed-off-by: Yurii <yurii@skymind.io>
* cublasHandle sharing + lock
Signed-off-by: raver119 <raver119@gmail.com>
* cublasHandle sharing + lock
Signed-off-by: raver119 <raver119@gmail.com>
* Documentation from serialization/deserialization in NLP (#221 )
* refactoring
Signed-off-by: Alexander Stoyakin <alexander.stoyakin@gmail.com>
* Javadocs
Signed-off-by: Alexander Stoyakin <alexander.stoyakin@gmail.com>
* Javadoc fixed
Signed-off-by: Alexander Stoyakin <alexander.stoyakin@gmail.com>
* Cleanup
Signed-off-by: Alexander Stoyakin <alexander.stoyakin@gmail.com>
* dedicated lock for getCudaCublasHandle
Signed-off-by: raver119 <raver119@gmail.com>
* Small fixes (#223 )
Signed-off-by: AlexDBlack <blacka101@gmail.com>
* ELU DL4J fixes (#224 )
Signed-off-by: AlexDBlack <blacka101@gmail.com>
* javadoc (#225 )
Signed-off-by: Robert Altena <Rob@Ra-ai.com>
* Small test compilation fix (#226 )
Signed-off-by: AlexDBlack <blacka101@gmail.com>
* #8182 remove spark version suffix (#227 )
Signed-off-by: AlexDBlack <blacka101@gmail.com>
* [WIP] Thread safety (#229 )
* sync after cublas*gemm
Signed-off-by: raver119 <raver119@gmail.com>
* mutex for CublasHelper
Signed-off-by: raver119 <raver119@gmail.com>
* don't store cublasHandle in LaunchContext, it's per-device anyway
Signed-off-by: raver119 <raver119@gmail.com>
* some printout
Signed-off-by: raver119 <raver119@gmail.com>
* check for field instead
Signed-off-by: raver119 <raver119@gmail.com>
* pew-pew
Signed-off-by: raver119 <raver119@gmail.com>
* don't release ContextBuffers until device changed
Signed-off-by: raver119 <raver119@gmail.com>
* small tweak
Signed-off-by: raver119 <raver119@gmail.com>
* some logging in sgemm
Signed-off-by: raver119 <raver119@gmail.com>
* stream sync
Signed-off-by: raver119 <raver119@gmail.com>
* some more logging
Signed-off-by: raver119 <raver119@gmail.com>
* some more error checks
Signed-off-by: raver119 <raver119@gmail.com>
* one fancy test
Signed-off-by: raver119 <raver119@gmail.com>
* one fancy test
Signed-off-by: raver119 <raver119@gmail.com>
* minor AffinityManager fix
Signed-off-by: raver119 <raver119@gmail.com>
* cudaEvent error logging improvement
Signed-off-by: raver119 <raver119@gmail.com>
* ConstantHelper thread safety
Signed-off-by: raver119 <raver119@gmail.com>
* - minor corrections in ConstantTadHelper
Signed-off-by: Yurii <yurii@skymind.io>
* ConstantShapeHelper thread safety
Signed-off-by: raver119 <raver119@gmail.com>
* ConstantTadHelper.cu updated
Signed-off-by: raver119 <raver119@gmail.com>
* logging off
Signed-off-by: raver119 <raver119@gmail.com>
* logging off
Signed-off-by: raver119 <raver119@gmail.com>
2019-09-03 22:02:02 +03:00
skymindops
b5f0ec072f
Eclipse Migration Initial Commit
2019-06-06 15:21:15 +03:00