A função de biblioteca clGetProfileDataDeviceIntelFPGA deve ser chamada no código host ao fazer o perfil dinâmico de um kernel de execução automática. Se essa função for chamada diretamente, a compilação de código host pode falhar com um erro como os abaixo.
Linux (gcc)
erro: 'clGetProfileDataDeviceIntelFPGA' não foi declarado neste escopo
Windows (Microsoft Visual Studio)
erro: símbolo externo não resolvido clGetProfileDataDeviceIntelFPGA
Se o sistema estiver usando o driver de CID, funções não padrão, como *Funções IntelFPGA, não podem ser usadas diretamente. A chamada OpenCL clGetExtensionFunctionAddress deve ser usada para obter um ponteiro de função para a função não padrão e esse ponteiro deve ser usado para chamá-lo.
Usando o protótipo da função, localizado em CL/ext.h
externação CL_API_ENTRY cl_int CL_API_CALL
clGetProfileDataDeviceIntelFPGA(
cl_device_id /*device_id*/,
cl_program /*program*/,
cl_bool /*read_enqueue_kernels*/,
cl_bool /*read_auto_enqueued*/,
cl_bool /*clear_counters_after_readback*/,
size_t /*param_value_size*/,
void * /*param_value*/,
size_t * *param_value_size_ret*/,
cl_int * /*errcode_ret*/ );
Substitua a chamada de função
cl_int status = clGetProfileDataDeviceIntelFPGA (dispositivo, programa, falso, verdadeiro, falso, 0, NULL, NULL, NULL);
com o código usando a sintaxe abaixo
cl_int (*get_profile_fn)(cl_device_id, cl_program, cl_bool, cl_bool, cl_bool, size_t, vazio *,size_t *,cl_int *);
get_profile_fn = (cl_int (*) (cl_device_id, cl_program, cl_bool,cl_bool,cl_bool,size_t, void *,size_t *,cl_int *))clGetExtensionFunctionAddress("clGetProfileDataDeviceIntelFPGA");
cl_int status = (cl_int)(*get_profile_fn) (dispositivo, programa, falso, verdadeiro, falso, 0, NULL, NULL, NULL);