#ifdef GPU_DEBUG
printf("Line %d.\n", __LINE__);
#endif
- const char* ptr = (const char*)gpu_mmul_cl;
- cl_program program = clCreateProgramWithSource(GPU_context, 1, &ptr, &gpu_mmul_cl_len, &err);
+ char ptr[gpu_mmul_cl_len + 1];
+ memcpy(ptr, gpu_mmul_cl, gpu_mmul_cl_len);
+ ptr[gpu_mmul_cl_len] = 0;
+ cl_program program = clCreateProgramWithSource(GPU_context, 1, (const char**)(&ptr), NULL, &err);
+ printf("---------------------\n%s---------------------\n", ptr);
if (err != CL_SUCCESS)
{
fprintf(stderr, "GPU fatal error: clCreateProgramWithSource() failed.\n");
__kernel gpu_mmul(__global float* ptrR, __global float* ptrA, __global float* ptrB, const int N, const int W)
{
+ int row = get_global_id(0);
+ int col = get_global_id(1);
+ float sum = 0;
+ for (int i = 0; i < N; i++)
+ {
+ sum += ptrA[row * W + i] * ptrB[i * W + col];
+ }
+ ptrR[row * W + col] = sum;
}
\ No newline at end of file