| 125 | |
| 126 | |
| 127 | cl_int call_kernel_triple_update(const char* kernel_name, |
| 128 | const cl_program prg, |
| 129 | const cl_command_queue queue, |
| 130 | cl_mem A, |
| 131 | unsigned int offA, |
| 132 | cl_mem d_dinvA, |
| 133 | int i, |
| 134 | unsigned int lda, |
| 135 | int M, |
| 136 | cl_event *event) |
| 137 | { |
| 138 | cl_int err = 0; |
| 139 | |
| 140 | unsigned int m = M; |
| 141 | |
| 142 | int npages = M/(i*2)+(M%(i*2)!=0); |
| 143 | size_t globalLocal [2] = { (i <= 32)?(i/4):16, 4}; |
| 144 | size_t globalThreads[2] = { (i/(globalLocal[0]*globalLocal[1]))* globalLocal[0], |
| 145 | npages*(i/16) * globalLocal[1]}; |
| 146 | |
| 147 | cl_kernel kernel = clCreateKernel(prg, kernel_name, &err); |
| 148 | if (err != CL_SUCCESS) { |
| 149 | //printf( "create kernel %s failed with %d\n", kernel_name, err ); |
| 150 | return err; |
| 151 | } |
| 152 | |
| 153 | clSetKernelArg(kernel, 0, sizeof(cl_mem), &A); |
| 154 | clSetKernelArg(kernel, 1, sizeof(unsigned int), &offA); |
| 155 | clSetKernelArg(kernel, 2, sizeof(cl_mem), &d_dinvA); |
| 156 | clSetKernelArg(kernel, 3, sizeof(int), &i); |
| 157 | clSetKernelArg(kernel, 4, sizeof(unsigned int), &lda); |
| 158 | clSetKernelArg(kernel, 5, sizeof(int), &npages); |
| 159 | clSetKernelArg(kernel, 6, sizeof(unsigned int), &m); |
| 160 | |
| 161 | err = clEnqueueNDRangeKernel(queue, kernel, 2, NULL, |
| 162 | globalThreads, globalLocal , |
| 163 | 0, NULL, event); |
| 164 | |
| 165 | |
| 166 | if (err != CL_SUCCESS) { |
| 167 | clReleaseKernel(kernel); |
| 168 | //printf( "execution of kernel %s failed with %d\n", kernel_name, err ); |
| 169 | return err; |
| 170 | } |
| 171 | |
| 172 | err = clReleaseKernel(kernel); |
| 173 | return err; |
| 174 | |
| 175 | } |
| 176 | |
| 177 | |
| 178 |
nothing calls this directly
no outgoing calls
no test coverage detected