Pergunta

Estou desenvolvendo um código OpenCL no Snow Leopard e entender que o OpenCL apenas em tempo de compilação é feita por Clang/LLVM.É o pré-processador C é usado em tudo?Existe uma maneira para definir definições de pré-processamento com o compilador?Quais as definições que existem?

Eu gostaria que o código fique atento se ele é compilado para a CPU ou GPU, então eu, por exemplo, pode usar printf instruções para depuração.

Foi útil?

Solução

a clBuildProgram API leva argumentos do compilador (o const char * options parâmetro).

-D MYMACRO é entendido, assim é -D MYMACRO=value.

Quanto ao que macros predefinidos, consulte a especificação OpenCL para uma lista completa (Seção 6.9). Uma lista não exaustiva:

  • __FILE__
  • __LINE__
  • __OPENCL_VERSION__

Outras dicas

Você também pode usar o OpenCL "pré-processador" para definir as definições (como em C):

#define dot3(x1, y1, z1, x2, y2, z2) ((x1)*(x2) + (y1)*(y2) + (z1)*(z2))

(note os parênteses, eles são importantes porque você pode inserir qualquer Expressão nas Variáveis e expressão é correctamente avaliados)

Isso ajuda a melhorar a velocidade de sua Aplicação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top