summaryrefslogtreecommitdiff
path: root/src/kernels/level2
diff options
context:
space:
mode:
authorAngus, Alexander <aangus@qti.qualcomm.com>2023-01-03 10:56:04 -0800
committerAngus, Alexander <aangus@qti.qualcomm.com>2023-01-03 10:56:04 -0800
commit4f394608a28f419dfd6091c704148d9e638a26f0 (patch)
tree4c0e042109c4d249ff5b700fc49a862169edec5a /src/kernels/level2
parent03cffa83c5f7742f8ec0c5e762bb7048e38952f3 (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.opencl6
-rw-r--r--src/kernels/level2/xgemv_fast.opencl12
-rw-r--r--src/kernels/level2/xger.opencl6
-rw-r--r--src/kernels/level2/xher.opencl6
-rw-r--r--src/kernels/level2/xher2.opencl6
-rw-r--r--src/kernels/level2/xtrsv.opencl12
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,