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

Function selectVectorization

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

Source from the content-addressed store, hash-verified

104 */
105
106cl_int
107selectVectorization(
108 const SolutionStep *step,
109 CLBLASKernExtra *kextra)
110{
111 const TargetDevice *device = &step->device;
112 cl_device_type devType;
113 cl_int err;
114 size_t tw;
115 bool tra;
116 size_t checkedSizes[3];
117 int i, j;
118 const CLBlasKargs *kargs = &step->args;
119 KernelExtraFlags kflags = kextra->flags;
120 KernelExtraFlags vecFlags[3] = { KEXTRA_NO_COPY_VEC_A, KEXTRA_NO_COPY_VEC_B,
121 KEXTRA_NO_COPY_VEC_C };
122 unsigned int vlen;
123 unsigned int tsize;
124 MemoryPattern *mempat;
125 const SubproblemDim *dim = &step->subdims[1];
126 int funcLevel;
127
128 mempat = &clblasSolvers[step->funcID].memPatterns[step->patternID];
129 err = clGetDeviceInfo(device->id, CL_DEVICE_TYPE, sizeof(devType),
130 &devType, NULL);
131 if (err != CL_SUCCESS) {
132 return err;
133 }
134
135 if (isLdsUsed(mempat)) {
136 kextra->vecLenC = kextra->vecLen = sizeof(cl_float4) /
137 dtypeSize(step->args.dtype);
138 kextra->vecLenA = kextra->vecLenB = kextra->vecLen;
139 }
140 else {
141 kextra->vecLenA = kextra->vecLenB = 0;
142 }
143
144 // select vectorization based upon leading dimensions and starting offsets
145 for (i = 0; i < 2; i++) {
146 if (!i) {
147 // check by leading dimensions
148 checkedSizes[0] = kargs->lda.matrix;
149 if (funcBlasLevel(step->funcID) == 2) {
150 checkedSizes[1] = checkedSizes[2] = 0;
151 }
152 else {
153 checkedSizes[1] = kargs->ldb.matrix;
154 checkedSizes[2] = kargs->ldc.matrix;
155 }
156 }
157 else {
158 // check by offsets
159 checkedSizes[0] = kargs->offA;
160 checkedSizes[1] = kargs->offBX;
161 checkedSizes[2] = kargs->offCY;
162 }
163

Callers 1

makeSolutionSeqFunction · 0.70

Calls 6

dtypeSizeFunction · 0.85
funcBlasLevelFunction · 0.85
funcHasTriangMatrixFunction · 0.85
isMatrixAccessColMajFunction · 0.85
appropriateVecLenFunction · 0.85
uminFunction · 0.85

Tested by

no test coverage detected