Utilizzando #include per caricare il codice OpenCL
-
06-07-2019 - |
Domanda
L'ho visto fatto molto tempo fa con il codice shader hlsl / glsl - usando un #include
sul file del codice sorgente che incolla il codice in un char *
in modo che nessun file IO si verifichi in fase di esecuzione.
Se dovessi rappresentarlo come pseudo-codice, sarebbe un po 'così:
#define CLSourceToString(filename) " #include "filename" "
const char* kernel = CLSourceToString("kernel.cl");
Ora, ovviamente, che #define
non funzionerà perché proverà semplicemente a usare quelle virgolette per iniziare le stringhe.
Soluzione
Vedi i motori di fisica dei proiettili che utilizzano OpenCL per come farlo in kernel .
In sorgente C ++ / C
#define MSTRINGIFY(A) #A
char* stringifiedSourceCL =
#include "VectorAddKernels.cl"
Nella fonte OpenCL
MSTRINGIFY(
__kernel void VectorAdd(__global float8* c)
{
// snipped out OpenCL code...
return;
}
);
Altri suggerimenti
Secondo questo , è impossibile, ma puoi usare xxd -i
per archiviare lo stesso effetto.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow