I am trying to figure out how to properly use the
clCreateProgramWithIL function of the OpenCL C API.
More specifically, I am working on a project where I need to get a
.cl file from a user, compile it to
LLVM IR, instrument the
LLVM IR bitcode (using the LLVM IR C++ API) for profiling purposes and then run the instrumented kernels on any device. It seems like
clCreateProgramWithIL is what I need, but after using it followed by
clBuildProgram, the latter always fails with the following error:
CL_BUILD_PROGRAM_FAILURE error: undefined reference to `get_global_id()' error: backend compiler failed build.
I tried converting
LLVM IR to
llvm-spirv but I got the same error. Isn’t
clBuildProgram supposed to link the intermediate representation (
LLVM IR or
SPIR-V) with the OpenCL runtime library? Am I misusing the
clCreateProgramWithIL function? I can not find any instructions or examples as to how to use it properly.