Question

I've seen this done long ago with hlsl/glsl shader code -- using an #include on the source code file that pastes the code into a char* so that no file IO happens at runtime.

If I were to represent it as pseudo-code, it would look a little like this:

#define CLSourceToString(filename) " #include "filename" "
const char* kernel = CLSourceToString("kernel.cl");

Now of course that #define isn't going to work because it'll just try to use those quotation marks to start strings.

Was it helpful?

Solution

See the bullet physics engines use of OpenCL for how to do this to a kernel.

In C++ / C source

#define MSTRINGIFY(A) #A
char* stringifiedSourceCL = 
#include "VectorAddKernels.cl"

In the OpenCL source

MSTRINGIFY(
   __kernel void VectorAdd(__global float8* c)
   {
    // snipped out OpenCL code...
    return;
   }
);

OTHER TIPS

According to this, it's not possible, but you can use xxd -i to archieve the same effect.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top