diff options
author | Anthony Barbier <anthony.barbier@arm.com> | 2018-11-30 10:42:40 +0000 |
---|---|---|
committer | Anthony Barbier <Anthony.barbier@arm.com> | 2018-12-11 13:55:49 +0000 |
commit | ff0bccfb4697c591d569db9c2dc223f2e311a7d3 (patch) | |
tree | 3db31636df5d8568fea1db1d275f45e3d63a70d3 /src/core/NEON/kernels/assembly/NEGEMMInterleavedMatrixMultiplyWrapper.cpp | |
parent | 5ba5e0938e68d4f90f5545a81066d56f022b376a (diff) | |
download | ComputeLibrary-ff0bccfb4697c591d569db9c2dc223f2e311a7d3.tar.gz |
COMPMID-1497: Add support for interleaved B reshaping in gemm_interleaved
Change-Id: I2171e1bf707bdcfa221c18d7a8904979e110020d
Reviewed-on: https://review.mlplatform.org/326
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Pablo Marquez <pablo.tello@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Diffstat (limited to 'src/core/NEON/kernels/assembly/NEGEMMInterleavedMatrixMultiplyWrapper.cpp')
-rw-r--r-- | src/core/NEON/kernels/assembly/NEGEMMInterleavedMatrixMultiplyWrapper.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/core/NEON/kernels/assembly/NEGEMMInterleavedMatrixMultiplyWrapper.cpp b/src/core/NEON/kernels/assembly/NEGEMMInterleavedMatrixMultiplyWrapper.cpp index 2c9cd320f0..3b2975dd80 100644 --- a/src/core/NEON/kernels/assembly/NEGEMMInterleavedMatrixMultiplyWrapper.cpp +++ b/src/core/NEON/kernels/assembly/NEGEMMInterleavedMatrixMultiplyWrapper.cpp @@ -101,6 +101,14 @@ void NEGEMMInterleavedMatrixMultiplyWrapperTemplate<To, Tr, use_dot>::create_wor using strategy = typename Kernel<To, use_dot>::strategy; unsigned int offset_transformed_b = 0; + unsigned int wl_index = 0; + unsigned int num_buffers = 0, reshaped_block_size = 0; + + if(!_b_is_pretransposed) + { + num_buffers = _transformed_b->info()->tensor_shape()[1]; + reshaped_block_size = _transformed_b->info()->tensor_shape()[0]; + } execute_window_loop(_block_walker, [&](const Coordinates & id) { const unsigned int x0 = id.x(); @@ -122,7 +130,9 @@ void NEGEMMInterleavedMatrixMultiplyWrapperTemplate<To, Tr, use_dot>::create_wor } else { - ARM_COMPUTE_ERROR("Not supported"); + // Rotate through the BufferManager's buffers: + wl_index++; + offset_transformed_b = (wl_index % num_buffers) * reshaped_block_size; } }); } |