OpenCL compilador de pré-processamento de definições?
-
20-09-2019 - |
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.
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.