OpenCL-Compiler Vorverarbeitung Definitionen?
-
20-09-2019 - |
Frage
Ich entwickle OpenCL-Code auf Snow Leopard und verstehen, dass die OpenCL Just-in-Time-Kompilierung von Clang / LLVM erfolgt. Ist das C-Präprozessor überhaupt verwendet? Gibt es eine Möglichkeit der Vorverarbeitung Definitionen mit dem Compiler zu setzen? Welche Definitionen existieren?
würde ich den Code gerne von zu beachten, ob es für die CPU oder GPU, damit ich kompiliert wird zum Beispiel printf-Anweisungen für die Fehlersuche verwenden kann.
Lösung
die clBuildProgram
API nimmt Compiler Argumente (die const char * options
Parameter).
-D MYMACRO
verstanden wird, so ist -D MYMACRO=value
.
In Bezug auf welche Makros vordefiniert finden Sie in der OpenCL-Spezifikation für eine vollständige Liste (Abschnitt 6.9). Eine nicht erschöpfende Liste:
-
__FILE__
-
__LINE__
-
__OPENCL_VERSION__
Andere Tipps
Sie können auch die OpenCL "Präprozessor" verwenden Definitionen zu definieren (wie in C):
#define dot3(x1, y1, z1, x2, y2, z2) ((x1)*(x2) + (y1)*(y2) + (z1)*(z2))
(man beachte die Klammern, sie sind wichtig, weil Sie einen Ausdruck in der Variablen einfügen können und der Ausdruck wird korrekt ausgewertet)
Dies hilft, die Geschwindigkeit Ihrer Anwendung zu verbessern.