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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top