Utilisation de #include pour charger du code OpenCL
-
06-07-2019 - |
Question
J'ai vu cela depuis longtemps avec le code shader hlsl / glsl - en utilisant un #include
sur le fichier de code source qui colle le code dans un char *
afin qu'aucun fichier IO ne se produise au moment de l'exécution.
Si je devais le représenter sous forme de pseudo-code, cela ressemblerait un peu à ceci:
#define CLSourceToString(filename) " #include "filename" "
const char* kernel = CLSourceToString("kernel.cl");
Maintenant, bien sûr, #define
ne va pas fonctionner car il va simplement essayer d'utiliser ces guillemets pour démarrer des chaînes.
La solution
Voir la balle utilisée par OpenCL dans le moteur physique pour comment faire cela sur un noyau .
En source C ++ / C
#define MSTRINGIFY(A) #A
char* stringifiedSourceCL =
#include "VectorAddKernels.cl"
Dans la source OpenCL
MSTRINGIFY(
__kernel void VectorAdd(__global float8* c)
{
// snipped out OpenCL code...
return;
}
);
Autres conseils
Selon ceci , c'est impossible, mais vous pouvez utiliser xxd -i
pour obtenir le même effet.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow