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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top