OpenCL definizioni compilatore di pre-elaborazione?
-
20-09-2019 - |
Domanda
sto sviluppando codice OpenCL su Snow Leopard e capire che l'OpenCL compilatore just-in-time è fatto da Clang / LLVM. È il preprocessore C utilizzato a tutti? C'è un modo per impostare le definizioni di pre-elaborazione con il compilatore? Cosa definizioni esiste?
Vorrei il codice di essere a conoscenza del fatto che sia compilato per CPU o GPU in modo da per esempio possibile utilizzare le istruzioni printf per il debug.
Soluzione
API clBuildProgram
prende argomenti compilatore (il parametro const char * options
).
-D MYMACRO
Resta inteso, così è -D MYMACRO=value
.
Per quanto riguarda quello predefinito macro, vedere la specifica OpenCL per una lista completa (Sezione 6.9). Un elenco non esaustivo:
-
__FILE__
-
__LINE__
-
__OPENCL_VERSION__
Altri suggerimenti
È anche possibile utilizzare il "preprocessore" OpenCL per definire le definizioni (come in C):
#define dot3(x1, y1, z1, x2, y2, z2) ((x1)*(x2) + (y1)*(y2) + (z1)*(z2))
(notare le staffe, che sono importanti perché è possibile inserire qualsiasi espressione nelle variabili e l'espressione ottiene correttamente valutata)
Questo aiuta a migliorare la velocità della vostra applicazione.