Hello,
I want to learn how to build native OpenCL kernel by assembly and load this kernel. I am already able to generate assembly by the OpenCL kernel and compile it then:
ioc64 -cmd=build -input=kernel.cl -device=co -asm=file.s icc -mmic -c file.s -o kernel
But how do I load this kernel into OpenCL runtime. My current approach did not work:
FILE *fp; std::string fileName = "kernel"; size_t binarySize; unsigned char *binaryBuffer; /* Load kernel binary */ fp = fopen(fileName.c_str(), "r"); binaryBuffer = (unsigned char *) malloc(MAX_BINARY_SIZE); binarySize = fread(binaryBuffer, 1, MAX_BINARY_SIZE, fp); fclose(fp); cl::Program::Binaries binaries; binaries.push_back( { binaryBuffer, binarySize }); cl_int *err = new cl_int; cl::Program *program = new cl::Program(*context, devices, binaries, CL_SUCCESS, err);
How do I load the kernel file as OpenCL program?
Thanks, Simon