| 115 | } |
| 116 | |
| 117 | string getProgramBuildLog(const Program &prog) { |
| 118 | string build_error(""); |
| 119 | try { |
| 120 | build_error.reserve(4096); |
| 121 | auto devices = prog.getInfo<CL_PROGRAM_DEVICES>(); |
| 122 | for (auto &device : prog.getInfo<CL_PROGRAM_DEVICES>()) { |
| 123 | build_error += |
| 124 | format("OpenCL Device: {}\n\tOptions: {}\n\tLog:\n{}\n", |
| 125 | device.getInfo<CL_DEVICE_NAME>(), |
| 126 | prog.getBuildInfo<CL_PROGRAM_BUILD_OPTIONS>(device), |
| 127 | prog.getBuildInfo<CL_PROGRAM_BUILD_LOG>(device)); |
| 128 | } |
| 129 | } catch (const cl::Error &e) { |
| 130 | build_error = format("Failed to fetch build log: {}", e.what()); |
| 131 | } |
| 132 | return build_error; |
| 133 | } |
| 134 | |
| 135 | string getKernelCacheFilename(const int device, const string &key) { |
| 136 | auto &dev = arrayfire::opencl::getDevice(device); |
no outgoing calls
no test coverage detected