| 72 | } |
| 73 | |
| 74 | static void |
| 75 | printBuildError( |
| 76 | cl_int error, |
| 77 | cl_device_id device, |
| 78 | SolverKgen kgen, |
| 79 | const SubproblemDim *dims, |
| 80 | const PGranularity *pgran, |
| 81 | const CLBLASKernExtra *kextra, |
| 82 | const char *source, |
| 83 | const char *buildLog) |
| 84 | { |
| 85 | char name[128]; |
| 86 | char dimStr[1024]; |
| 87 | char pgranStr[1024]; |
| 88 | char *p; |
| 89 | MemoryPattern *mempat = NULL; |
| 90 | unsigned int i, j; |
| 91 | const char *s; |
| 92 | |
| 93 | name[0] = '\0'; |
| 94 | clGetDeviceInfo(device, CL_DEVICE_NAME, sizeof(name), name, NULL); |
| 95 | |
| 96 | // lookup memory pattern |
| 97 | s = NULL; |
| 98 | for (i = 0; i < BLAS_FUNCTIONS_NUMBER; i++) { |
| 99 | for (j = 0; j < clblasSolvers[i].nrPatterns; j++) { |
| 100 | mempat = &clblasSolvers[i].memPatterns[j]; |
| 101 | if (kgen == mempat->sops->genKernel) { |
| 102 | s = kernelTypeString(kextra->kernType); |
| 103 | break; |
| 104 | } |
| 105 | } |
| 106 | if (s != NULL) { |
| 107 | break; |
| 108 | } |
| 109 | } |
| 110 | |
| 111 | // sprintf Subproblem dimensions |
| 112 | p = dimStr; |
| 113 | for (i = 0; i < mempat->nrLevels; i++) { |
| 114 | p = sprintfGranulation(p, dims, i); |
| 115 | strcat(p, "; "); |
| 116 | p += strlen(p); |
| 117 | } |
| 118 | |
| 119 | // sprintf data parallelism granularity |
| 120 | sprintf(pgranStr, "pgran->wgDim = %d, pgran->wgSize[0] = %u, " |
| 121 | "pgran->wgSize[1] = %u, pgran->wfSize = %u", |
| 122 | pgran->wgDim, pgran->wgSize[0], pgran->wgSize[1], |
| 123 | pgran->wfSize); |
| 124 | |
| 125 | fprintf(stderr, "\n========================================================\n\n"); |
| 126 | fprintf(stderr, "AN INTERNAL KERNEL BUILD ERROR OCCURRED!\n"); |
| 127 | fprintf(stderr, "device name = %s\n", name); |
| 128 | fprintf(stderr, "error = %d\n", error); |
| 129 | fprintf(stderr, "memory pattern = %s, %s kernel generator\n", mempat->name, s); |
| 130 | fprintf(stderr, "Subproblem dimensions: %s\n", dimStr); |
| 131 | fprintf(stderr, "Parallelism granularity: %s\n", pgranStr); |
no test coverage detected