diff options
author | Angus, Alexander <aangus@qti.qualcomm.com> | 2023-01-03 10:56:04 -0800 |
---|---|---|
committer | Angus, Alexander <aangus@qti.qualcomm.com> | 2023-01-03 10:56:04 -0800 |
commit | 4f394608a28f419dfd6091c704148d9e638a26f0 (patch) | |
tree | 4c0e042109c4d249ff5b700fc49a862169edec5a /src/kernels/level2 | |
parent | 03cffa83c5f7742f8ec0c5e762bb7048e38952f3 (diff) |
implemented changes to boost Adreno performance according to https://jira-dc.qualcomm.com/jira/browse/OSR-8731
Diffstat (limited to 'src/kernels/level2')
-rw-r--r-- | src/kernels/level2/xgemv.opencl | 6 | ||||
-rw-r--r-- | src/kernels/level2/xgemv_fast.opencl | 12 | ||||
-rw-r--r-- | src/kernels/level2/xger.opencl | 6 | ||||
-rw-r--r-- | src/kernels/level2/xher.opencl | 6 | ||||
-rw-r--r-- | src/kernels/level2/xher2.opencl | 6 | ||||
-rw-r--r-- | src/kernels/level2/xtrsv.opencl | 12 |
6 files changed, 40 insertions, 8 deletions
diff --git a/src/kernels/level2/xgemv.opencl b/src/kernels/level2/xgemv.opencl index ba29aba6..16711aa4 100644 --- a/src/kernels/level2/xgemv.opencl +++ b/src/kernels/level2/xgemv.opencl @@ -210,7 +210,11 @@ INLINE_FUNC real LoadMatrixA(const __global real* restrict agm, const int x, con // ================================================================================================= // Full version of the kernel -__kernel __attribute__((reqd_work_group_size(WGS1, 1, 1))) +#if RELAX_WORKGROUP_SIZE == 1 + __kernel +#elif + __kernel __attribute__((reqd_work_group_size(WGS1, 1, 1))) +#endif void Xgemv(const int m, const int n, const real_arg arg_alpha, const real_arg arg_beta, diff --git a/src/kernels/level2/xgemv_fast.opencl b/src/kernels/level2/xgemv_fast.opencl index 45ceb36c..853d3d28 100644 --- a/src/kernels/level2/xgemv_fast.opencl +++ b/src/kernels/level2/xgemv_fast.opencl @@ -88,7 +88,11 @@ INLINE_FUNC realVF LoadMatrixAVF(const __global realVF* restrict agm, const int // --> 'a_ld' is a multiple of VW2 // --> 'a_rotated' is 0 // --> 'do_conjugate' is 0 -__kernel __attribute__((reqd_work_group_size(WGS2, 1, 1))) +#if RELAX_WORKGROUP_SIZE == 1 + __kernel +#elif + __kernel __attribute__((reqd_work_group_size(WGS2, 1, 1))) +#endif void XgemvFast(const int m, const int n, const real_arg arg_alpha, const real_arg arg_beta, @@ -191,7 +195,11 @@ void XgemvFast(const int m, const int n, // --> 'a_ld' is a multiple of VW3 // --> 'a_rotated' is 1 // --> 'do_conjugate' is 0 -__kernel __attribute__((reqd_work_group_size(WGS3, 1, 1))) +#if RELAX_WORKGROUP_SIZE == 1 + __kernel +#elif + __kernel __attribute__((reqd_work_group_size(WGS3, 1, 1))) +#endif void XgemvFastRot(const int m, const int n, const real_arg arg_alpha, const real_arg arg_beta, diff --git a/src/kernels/level2/xger.opencl b/src/kernels/level2/xger.opencl index ca6071cd..3620c66a 100644 --- a/src/kernels/level2/xger.opencl +++ b/src/kernels/level2/xger.opencl @@ -18,7 +18,11 @@ R"( // ================================================================================================= // Regular version of the rank-1 matrix update kernel (GER, GERU, GERC) -__kernel __attribute__((reqd_work_group_size(WGS1, WGS2, 1))) +#if RELAX_WORKGROUP_SIZE == 1 + __kernel +#elif + __kernel __attribute__((reqd_work_group_size(WGS1, WGS2, 1))) +#endif void Xger(const int max1, const int max2, const real_arg arg_alpha, const __global real* restrict xgm, const int x_offset, const int x_inc, diff --git a/src/kernels/level2/xher.opencl b/src/kernels/level2/xher.opencl index 8a57bdfc..9e460cd4 100644 --- a/src/kernels/level2/xher.opencl +++ b/src/kernels/level2/xher.opencl @@ -18,7 +18,11 @@ R"( // ================================================================================================= // Symmetric version of the rank-1 matrix update kernel (HER, HPR, SYR, SPR) -__kernel __attribute__((reqd_work_group_size(WGS1, WGS2, 1))) +#if RELAX_WORKGROUP_SIZE == 1 + __kernel +#elif + __kernel __attribute__((reqd_work_group_size(WGS1, WGS2, 1))) +#endif void Xher(const int n, const real_arg arg_alpha, const __global real* restrict xgm, const int x_offset, const int x_inc, diff --git a/src/kernels/level2/xher2.opencl b/src/kernels/level2/xher2.opencl index 73305149..c3e85c15 100644 --- a/src/kernels/level2/xher2.opencl +++ b/src/kernels/level2/xher2.opencl @@ -18,7 +18,11 @@ R"( // ================================================================================================= // Symmetric version of the rank-2 matrix update kernel (HER2, HPR2, SYR2, SPR2) -__kernel __attribute__((reqd_work_group_size(WGS1, WGS2, 1))) +#if RELAX_WORKGROUP_SIZE == 1 + __kernel +#elif + __kernel __attribute__((reqd_work_group_size(WGS1, WGS2, 1))) +#endif void Xher2(const int n, const real_arg arg_alpha, const __global real* restrict xgm, const int x_offset, const int x_inc, diff --git a/src/kernels/level2/xtrsv.opencl b/src/kernels/level2/xtrsv.opencl index e7b6ae79..e3b5418c 100644 --- a/src/kernels/level2/xtrsv.opencl +++ b/src/kernels/level2/xtrsv.opencl @@ -39,7 +39,11 @@ void FillVector(const int n, const int inc, const int offset, // ================================================================================================= -__kernel __attribute__((reqd_work_group_size(TRSV_BLOCK_SIZE, 1, 1))) +#if RELAX_WORKGROUP_SIZE == 1 + __kernel +#elif + __kernel __attribute__((reqd_work_group_size(TRSV_BLOCK_SIZE, 1, 1))) +#endif void trsv_forward(int n, const __global real *A, const int a_offset, int a_ld, __global real *b, const int b_offset, int b_inc, @@ -87,7 +91,11 @@ void trsv_forward(int n, } } -__kernel __attribute__((reqd_work_group_size(TRSV_BLOCK_SIZE, 1, 1))) +#if RELAX_WORKGROUP_SIZE == 1 + __kernel +#elif + __kernel __attribute__((reqd_work_group_size(TRSV_BLOCK_SIZE, 1, 1))) +#endif void trsv_backward(int n, const __global real *A, const int a_offset, int a_ld, __global real *b, const int b_offset, int b_inc, |