summaryrefslogtreecommitdiff
path: root/src/kernels/level3/xgemm_part1.opencl
diff options
context:
space:
mode:
authorCedric Nugteren <web@cedricnugteren.nl>2017-12-07 22:05:29 +0100
committerCedric Nugteren <web@cedricnugteren.nl>2017-12-07 22:05:29 +0100
commit540896476d62ce37e7a939d185c15dc930b8a343 (patch)
treef9799153ab3fccebc5c3b3a9aa2b1c2db46e47c2 /src/kernels/level3/xgemm_part1.opencl
parent0f9637bbac6248a381d7012d7224331d3d394efb (diff)
Added register promotion to the main GEMM kernel
Diffstat (limited to 'src/kernels/level3/xgemm_part1.opencl')
-rw-r--r--src/kernels/level3/xgemm_part1.opencl64
1 files changed, 32 insertions, 32 deletions
diff --git a/src/kernels/level3/xgemm_part1.opencl b/src/kernels/level3/xgemm_part1.opencl
index e118ba2f..88744668 100644
--- a/src/kernels/level3/xgemm_part1.opencl
+++ b/src/kernels/level3/xgemm_part1.opencl
@@ -135,47 +135,47 @@ R"(
// =================================================================================================
// Initializes the accumulation registers to zero
-INLINE_FUNC void InitAccRegisters(realM cpm[NWI][MWI/VWM]) {
+INLINE_FUNC void InitAccRegisters(realM cpm[NWI*MWI/VWM]) {
#pragma unroll
for (int _mi = 0; _mi < MWI/VWM; _mi += 1) {
#pragma unroll
for (int _ni = 0; _ni < NWI; _ni += 1) {
#if VWM == 1
- SetToZero(cpm[_ni][_mi]);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi]);
#elif VWM == 2
- SetToZero(cpm[_ni][_mi].x);
- SetToZero(cpm[_ni][_mi].y);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].x);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].y);
#elif VWM == 4
- SetToZero(cpm[_ni][_mi].x);
- SetToZero(cpm[_ni][_mi].y);
- SetToZero(cpm[_ni][_mi].z);
- SetToZero(cpm[_ni][_mi].w);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].x);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].y);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].z);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].w);
#elif VWM == 8
- SetToZero(cpm[_ni][_mi].s0);
- SetToZero(cpm[_ni][_mi].s1);
- SetToZero(cpm[_ni][_mi].s2);
- SetToZero(cpm[_ni][_mi].s3);
- SetToZero(cpm[_ni][_mi].s4);
- SetToZero(cpm[_ni][_mi].s5);
- SetToZero(cpm[_ni][_mi].s6);
- SetToZero(cpm[_ni][_mi].s7);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].s0);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].s1);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].s2);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].s3);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].s4);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].s5);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].s6);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].s7);
#elif VWM == 16
- SetToZero(cpm[_ni][_mi].s0);
- SetToZero(cpm[_ni][_mi].s1);
- SetToZero(cpm[_ni][_mi].s2);
- SetToZero(cpm[_ni][_mi].s3);
- SetToZero(cpm[_ni][_mi].s4);
- SetToZero(cpm[_ni][_mi].s5);
- SetToZero(cpm[_ni][_mi].s6);
- SetToZero(cpm[_ni][_mi].s7);
- SetToZero(cpm[_ni][_mi].s8);
- SetToZero(cpm[_ni][_mi].s9);
- SetToZero(cpm[_ni][_mi].sA);
- SetToZero(cpm[_ni][_mi].sB);
- SetToZero(cpm[_ni][_mi].sC);
- SetToZero(cpm[_ni][_mi].sD);
- SetToZero(cpm[_ni][_mi].sE);
- SetToZero(cpm[_ni][_mi].sF);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].s0);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].s1);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].s2);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].s3);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].s4);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].s5);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].s6);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].s7);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].s8);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].s9);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].sA);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].sB);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].sC);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].sD);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].sE);
+ SetToZero(cpm[_ni * (MWI/VWM) + _mi].sF);
#endif
}
}