Usando #include para cargar el código OpenCL
-
06-07-2019 - |
Pregunta
He visto esto hace mucho tiempo con el código de sombreador hlsl / glsl, usando un #include
en el archivo de código fuente que pega el código en un char *
para que no ocurra ningún archivo IO en tiempo de ejecución.
Si tuviera que representarlo como pseudocódigo, se vería un poco así:
#define CLSourceToString(filename) " #include "filename" "
const char* kernel = CLSourceToString("kernel.cl");
Ahora, por supuesto, que #define
no funcionará porque solo intentará usar esas comillas para iniciar las cadenas.
Solución
Vea el uso de los motores de física de bala de OpenCL para cómo hacer esto a un kernel .
En fuente C ++ / C
#define MSTRINGIFY(A) #A
char* stringifiedSourceCL =
#include "VectorAddKernels.cl"
En la fuente OpenCL
MSTRINGIFY(
__kernel void VectorAdd(__global float8* c)
{
// snipped out OpenCL code...
return;
}
);
Otros consejos
De acuerdo con esto , es no es posible, pero puede usar xxd -i
para archivar el mismo efecto.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow