MCPcopy Create free account
hub / github.com/clMathLibraries/clBLAS / detectProblemTails

Function detectProblemTails

src/library/blas/generic/solution_seq_make.c:1104–1152  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1102}
1103
1104void
1105detectProblemTails(SolutionStep *step)
1106{
1107 SubproblemDim globDim, offDim;
1108 SubproblemDim *subdim;
1109 KernelExtraFlags kflags = KEXTRA_NO_FLAGS;
1110
1111 subdim = step->subdims;
1112
1113 kargsToProbDims(&globDim, step->funcID, &step->args, false);
1114 kargsToProbDims(&offDim, step->funcID, &step->args, true);
1115
1116 #ifdef DEBUG_2
1117 printf("detectProblemTails: subdimy=%d, subdimx=%d, subdimBwidth=%d\n", subdim->y, subdim->x, subdim->bwidth);
1118 #endif
1119 if (globDim.y % subdim->y) {
1120 kflags |= KEXTRA_TAILS_M;
1121 }
1122 if (globDim.x % subdim->x) {
1123 kflags |= KEXTRA_TAILS_N;
1124 }
1125 if (globDim.bwidth % subdim->bwidth) {
1126 kflags |= KEXTRA_TAILS_K;
1127 }
1128 if (clblasSolvers[step->funcID].memPatterns[step->patternID].nrLevels > 1) {
1129 if (globDim.y % subdim[1].y) {
1130 kflags |= KEXTRA_TAILS_M_LOWER;
1131 }
1132 if (globDim.x % subdim[1].x) {
1133 kflags |= KEXTRA_TAILS_N_LOWER;
1134 }
1135 if (globDim.bwidth % subdim[1].bwidth) {
1136 kflags |= KEXTRA_TAILS_K_LOWER;
1137 }
1138 }
1139 else {
1140 kflags |= (kflags & KEXTRA_TAILS_M) != 0 ? KEXTRA_TAILS_M_LOWER : 0;
1141 kflags |= (kflags & KEXTRA_TAILS_N) != 0 ? KEXTRA_TAILS_N_LOWER : 0;
1142 kflags |= (kflags & KEXTRA_TAILS_K) != 0 ? KEXTRA_TAILS_K_LOWER : 0;
1143 }
1144
1145 // clean tails flags
1146 step->extraFlags &= ~(KEXTRA_TAILS_M | KEXTRA_TAILS_N | KEXTRA_TAILS_K
1147 | KEXTRA_TAILS_M_LOWER
1148 | KEXTRA_TAILS_N_LOWER
1149 | KEXTRA_TAILS_K_LOWER);
1150 // set tails flags
1151 step->extraFlags |= kflags;
1152}
1153
1154void
1155detectOffsets(SolutionStep *step)

Callers 2

makeSolutionSeqFunction · 0.85

Calls 1

kargsToProbDimsFunction · 0.85

Tested by

no test coverage detected