ID do artigo: 000077342 Tipo de conteúdo: Solução de problemas Última revisão: 30/11/2018

Por que eu recebo o erro "'clGetProfileDataDeviceIntelFPGA' não foi declarado neste escopo" ao compilar o código de host OpenCL?

Ambiente

    Intel® Quartus® Prime Standard Edition
    Intel® Quartus® Prime Pro Edition
    SDK Intel® FPGA para OpenCL™ Edição Pro
BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descrição

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.

Resolução

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);

 

 

Produtos relacionados

Este artigo aplica-se a 1 produtos

Dispositivos programáveis Intel®

1

O conteúdo desta página é uma combinação de tradução humana e por computador do conteúdo original em inglês. Este conteúdo é fornecido para sua conveniência e apenas para informação geral, e não deve ser considerado completo ou exato. Se houver alguma contradição entre a versão em inglês desta página e a tradução, a versão em inglês governará e será a controle. Exibir a versão em inglês desta página.