]> foleosoft.com Git - QAnsel.git/commitdiff
Mon Mar 4 08:44:19 PM EST 2024
authormiha-q <>
Tue, 5 Mar 2024 01:44:19 +0000 (20:44 -0500)
committermiha-q <>
Tue, 5 Mar 2024 01:44:19 +0000 (20:44 -0500)
src/complex.c

index 7bab0f8bbf83b7e2542139a124abfcc0ab1046af..00eabced7caebe7733cd2ef11fd611f47114f262 100644 (file)
@@ -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