Mit #include OpenCL-Code zu laden
-
06-07-2019 - |
Frage
Ich habe das schon vor langer Zeit mit HLSL / GLSL Shader-Code getan gesehen - eine #include
auf der Quellcode-Datei, die den Code in eine char*
Paste, so dass keine Datei IO zur Laufzeit geschieht
Wenn ich es als Pseudo-Code darstellen, wäre es ein wenig wie folgt aussehen:
#define CLSourceToString(filename) " #include "filename" "
const char* kernel = CLSourceToString("kernel.cl");
Jetzt natürlich, dass #define
nicht funktionieren wird, weil es nur würde versuchen, diese Anführungszeichen zu verwenden Strings zu starten.
Lösung
Sehen Sie die Kugel Physik-Engines Verwendung von OpenCL für wie tun dies auf eine kernel .
In C ++ / C-Quelle
#define MSTRINGIFY(A) #A
char* stringifiedSourceCL =
#include "VectorAddKernels.cl"
In der OpenCL Quelle
MSTRINGIFY(
__kernel void VectorAdd(__global float8* c)
{
// snipped out OpenCL code...
return;
}
);
Andere Tipps
Nach diese , es ist nicht möglich, aber Sie können xxd -i
verwenden, um die gleiche Wirkung archieve.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow