From: miha-q <> Date: Tue, 5 Mar 2024 01:44:19 +0000 (-0500) Subject: Mon Mar 4 08:44:19 PM EST 2024 X-Git-Url: http://www.foleosoft.com/?a=commitdiff_plain;h=d5119bc0752de8e0b8c749d5a27ef1a13c776271;p=QAnsel.git Mon Mar 4 08:44:19 PM EST 2024 --- diff --git a/src/complex.c b/src/complex.c index 7bab0f8..00eabce 100644 --- a/src/complex.c +++ b/src/complex.c @@ -304,6 +304,12 @@ uint8_t cpx_mtx_begin() return 0; } + size_t size; + clGetDeviceInfo(cpx_mtx_device_id, CL_DEVICE_NAME, 0, NULL, &size); + char str[size]; + clGetDeviceInfo(cpx_mtx_device_id, CL_DEVICE_NAME, size, str, NULL); + printf("%s\n", str); + cpx_mtx_context = clCreateContext(NULL, 1, &cpx_mtx_device_id, NULL, NULL, &err); if (err != CL_SUCCESS) { @@ -390,11 +396,34 @@ void cpx_mtx_dot_metal(float* ptrR, float* ptrA, float* ptrB, int rowsA, int col { program = clCreateProgramWithBinary(cpx_mtx_context, 1, &cpx_mtx_device_id, &cpx_mtx_cache_len, (const unsigned char**)&cpx_mtx_cache, NULL, &err); gpuerr(clCreateProgramWithBinary); + err = clBuildProgram(program, 1, &cpx_mtx_device_id, NULL, NULL, NULL); + if (err != CL_SUCCESS) + { + fprintf(stderr, "GPU fatal error: clBuildProgram() failed.\n"); + size_t log_size; + clGetProgramBuildInfo(program, cpx_mtx_device_id, CL_PROGRAM_BUILD_LOG, 0, NULL, &log_size); + char* log = malloc(log_size); + clGetProgramBuildInfo(program, cpx_mtx_device_id, CL_PROGRAM_BUILD_LOG, log_size, log, NULL); + printf("%s", log); + free(log); + exit(1); + } } //Setup kernel - cl_kernel kernel = clCreateKernel(program, "kernel_dot", &err); gpuerr(clCreateKernel); - err = clSetKernelArg(kernel, 0, sizeof(cl_mem), (void*)&memR); gpuerr(clSetKernfelArg); + cl_kernel kernel = clCreateKernel(program, "kernel_dot", &err); + //printf("%i\n", err); + //printf("\t%s: %i\n", "CL_SUCCESS", CL_SUCCESS); + //printf("\t%s: %i\n", "CL_INVALID_PROGRAM", CL_INVALID_PROGRAM); + //printf("\t%s: %i\n", "CL_INVALID_PROGRAM_EXECUTABLE", CL_INVALID_PROGRAM_EXECUTABLE); + //printf("\t%s: %i\n", "CL_INVALID_KERNEL_NAME", CL_INVALID_KERNEL_NAME); + //printf("\t%s: %i\n", "CL_INVALID_KERNEL_DEFINITION", CL_INVALID_KERNEL_DEFINITION); + //printf("\t%s: %i\n", "CL_INVALID_VALUE", CL_INVALID_VALUE); + //printf("\t%s: %i\n", "CL_OUT_OF_RESOURCES", CL_OUT_OF_RESOURCES); + //printf("\t%s: %i\n", "CL_OUT_OF_HOST_MEMORY", CL_OUT_OF_HOST_MEMORY); + gpuerr(clCreateKernel); + + err = clSetKernelArg(kernel, 0, sizeof(cl_mem), (void*)&memR); gpuerr(clSetKernelArg); err = clSetKernelArg(kernel, 1, sizeof(cl_mem), (void*)&memA); gpuerr(clSetKernelArg); err = clSetKernelArg(kernel, 2, sizeof(cl_mem), (void*)&memB); gpuerr(clSetKernelArg); err = clSetKernelArg(kernel, 3, sizeof(int), &rowsA); gpuerr(clSetKernelArg); @@ -469,6 +498,18 @@ void cpx_mtx_knk_metal(float* ptrR, float* ptrA, float* ptrB, int rowsA, int col { program = clCreateProgramWithBinary(cpx_mtx_context, 1, &cpx_mtx_device_id, &cpx_mtx_cache_len, (const unsigned char**)&cpx_mtx_cache, NULL, &err); gpuerr(clCreateProgramWithBinary); + err = clBuildProgram(program, 1, &cpx_mtx_device_id, NULL, NULL, NULL); + if (err != CL_SUCCESS) + { + fprintf(stderr, "GPU fatal error: clBuildProgram() failed.\n"); + size_t log_size; + clGetProgramBuildInfo(program, cpx_mtx_device_id, CL_PROGRAM_BUILD_LOG, 0, NULL, &log_size); + char* log = malloc(log_size); + clGetProgramBuildInfo(program, cpx_mtx_device_id, CL_PROGRAM_BUILD_LOG, log_size, log, NULL); + printf("%s", log); + free(log); + exit(1); + } } //Setup kernel