From abd80ca13d3f5440c2273d3c55cd12017f2f4568 Mon Sep 17 00:00:00 2001 From: skykongkong8 Date: Wed, 10 Jul 2024 18:10:38 +0900 Subject: [PATCH] [ hgemm ] Move hgemm_padding related files to explicit directory - Adding padding to matrices is not an optimal solution to approach, but yet can be one sub-optimal option. - Final goal of this directory would be deleting this directory itself. **Self evaluation:** 1. Build test: [X]Passed [ ]Failed [ ]Skipped 2. Run test: [X]Passed [ ]Failed [ ]Skipped Signed-off-by: skykongkong8 --- nntrainer/tensor/hgemm/hgemm_pack.cpp | 4 ++-- nntrainer/tensor/hgemm/hgemm_pack.h | 12 +++++------ .../hgemm/{ => hgemm_padding}/hgemm_padding.h | 0 .../{ => hgemm_padding}/hgemm_padding_a.cpp | 0 .../{ => hgemm_padding}/hgemm_padding_a.h | 0 .../{ => hgemm_padding}/hgemm_padding_b.cpp | 0 .../{ => hgemm_padding}/hgemm_padding_b.h | 0 .../tensor/hgemm/hgemm_padding/meson.build | 20 +++++++++++++++++++ nntrainer/tensor/hgemm/meson.build | 4 ++++ 9 files changed, 32 insertions(+), 8 deletions(-) rename nntrainer/tensor/hgemm/{ => hgemm_padding}/hgemm_padding.h (100%) rename nntrainer/tensor/hgemm/{ => hgemm_padding}/hgemm_padding_a.cpp (100%) rename nntrainer/tensor/hgemm/{ => hgemm_padding}/hgemm_padding_a.h (100%) rename nntrainer/tensor/hgemm/{ => hgemm_padding}/hgemm_padding_b.cpp (100%) rename nntrainer/tensor/hgemm/{ => hgemm_padding}/hgemm_padding_b.h (100%) create mode 100644 nntrainer/tensor/hgemm/hgemm_padding/meson.build diff --git a/nntrainer/tensor/hgemm/hgemm_pack.cpp b/nntrainer/tensor/hgemm/hgemm_pack.cpp index 0f4b1470..63d1b702 100644 --- a/nntrainer/tensor/hgemm/hgemm_pack.cpp +++ b/nntrainer/tensor/hgemm/hgemm_pack.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include void packing_A1(unsigned int m, unsigned int k, const __fp16 *from, @@ -404,8 +405,7 @@ void packing_transB16(unsigned int K, unsigned int N, const __fp16 *src, __fp16 *dst_off = (__fp16 *)dst; const unsigned int ld_tile_T = 16; - __fp16 *tile_T = new __fp16[8 * ld_tile_T]; - // __fp16 *tile_T = alignedMalloc(8 * ld_tile_T); + __fp16 *tile_T = alignedMalloc(8 * ld_tile_T); // 1. Do something like 8x16 transpose kernel // 2. Save linearized transposed output tile to dst diff --git a/nntrainer/tensor/hgemm/hgemm_pack.h b/nntrainer/tensor/hgemm/hgemm_pack.h index 7a671a51..b134ee12 100644 --- a/nntrainer/tensor/hgemm/hgemm_pack.h +++ b/nntrainer/tensor/hgemm/hgemm_pack.h @@ -89,13 +89,13 @@ void packing_B8(unsigned int K, unsigned int N, const __fp16 *src, void packing_B16(unsigned int K, unsigned int N, const __fp16 *src, unsigned int ldb, const __fp16 *dst); /** - * @brief + * @brief packing function of input matrix B_T * - * @param K - * @param N - * @param src - * @param ldb - * @param dst + * @param M length of the row of the matrix + * @param K length of the col of the matrix + * @param src input of original source of the matrix + * @param ldb leading dimension of the matrix + * @param dst output of packed data of the matrix */ void packing_transB16(unsigned int K, unsigned int N, const __fp16 *src, unsigned int ldb, const __fp16 *dst); diff --git a/nntrainer/tensor/hgemm/hgemm_padding.h b/nntrainer/tensor/hgemm/hgemm_padding/hgemm_padding.h similarity index 100% rename from nntrainer/tensor/hgemm/hgemm_padding.h rename to nntrainer/tensor/hgemm/hgemm_padding/hgemm_padding.h diff --git a/nntrainer/tensor/hgemm/hgemm_padding_a.cpp b/nntrainer/tensor/hgemm/hgemm_padding/hgemm_padding_a.cpp similarity index 100% rename from nntrainer/tensor/hgemm/hgemm_padding_a.cpp rename to nntrainer/tensor/hgemm/hgemm_padding/hgemm_padding_a.cpp diff --git a/nntrainer/tensor/hgemm/hgemm_padding_a.h b/nntrainer/tensor/hgemm/hgemm_padding/hgemm_padding_a.h similarity index 100% rename from nntrainer/tensor/hgemm/hgemm_padding_a.h rename to nntrainer/tensor/hgemm/hgemm_padding/hgemm_padding_a.h diff --git a/nntrainer/tensor/hgemm/hgemm_padding_b.cpp b/nntrainer/tensor/hgemm/hgemm_padding/hgemm_padding_b.cpp similarity index 100% rename from nntrainer/tensor/hgemm/hgemm_padding_b.cpp rename to nntrainer/tensor/hgemm/hgemm_padding/hgemm_padding_b.cpp diff --git a/nntrainer/tensor/hgemm/hgemm_padding_b.h b/nntrainer/tensor/hgemm/hgemm_padding/hgemm_padding_b.h similarity index 100% rename from nntrainer/tensor/hgemm/hgemm_padding_b.h rename to nntrainer/tensor/hgemm/hgemm_padding/hgemm_padding_b.h diff --git a/nntrainer/tensor/hgemm/hgemm_padding/meson.build b/nntrainer/tensor/hgemm/hgemm_padding/meson.build new file mode 100644 index 00000000..c6477743 --- /dev/null +++ b/nntrainer/tensor/hgemm/hgemm_padding/meson.build @@ -0,0 +1,20 @@ +hgemm_padding_headers = [ + 'hgemm_padding.h', + 'hgemm_padding_a.h', + 'hgemm_padding_b.h', +] + + +hgemm_padding_sources = [ + 'hgemm_padding_a.cpp', + 'hgemm_padding_b.cpp', +] + +foreach s : hgemm_padding_sources + nntrainer_sources += meson.current_source_dir() / s +endforeach + +foreach h : hgemm_padding_headers + nntrainer_headers += meson.current_source_dir() / h +endforeach + diff --git a/nntrainer/tensor/hgemm/meson.build b/nntrainer/tensor/hgemm/meson.build index 90ef0a37..e100f63a 100644 --- a/nntrainer/tensor/hgemm/meson.build +++ b/nntrainer/tensor/hgemm/meson.build @@ -10,6 +10,10 @@ subdir('hgemm_kernel') nntrainer_inc += include_directories('hgemm_kernel') nntrainer_inc_abs += meson.current_source_dir() / 'hgemm_kernel' +subdir('hgemm_padding') +nntrainer_inc += include_directories('hgemm_padding') +nntrainer_inc_abs += meson.current_source_dir() / 'hgemm_padding' + hgemm_sources = [ 'hgemm.cpp', 'hgemm_padding_a.cpp', -- 2.34.1