ID do artigo: 000073897 Tipo de conteúdo: Solução de problemas Última revisão: 23/01/2019

Por que um despejo de memória ocorre durante uma compilação de kernel OpenCL™ se a contagem de loop exceder o número de canais alocados?

Ambiente

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

Um despejo de memória pode ocorrer durante uma compilação OpenCL™ se um loop contiver uma gravação em um canal indexado e a contagem de loop exceder o número de canais alocados. Veja o código de exemplo abaixo.

caractere não assinado do canal my_channel[16] __attribute__(profundidade(1024));
dados de caracteres[32];

...
para (caractere não assinado i = 0; i < 32; i) {
write_channel_intel (my_channel[i], dados[i]);

}

Resolução

Certifique-se de que a contagem de loop nunca exceda o número de canais alocados.

dia 32 de #define num_channels

caractere não assinado do canal my_channel[num_channels] __attribute__(profundidade(1024);
dados de caracteres[num_channels];

...
para (caractere não assinado i = 0; i < num_channels; i) {
write_channel_intel (my_channel[i], dados[i]);

}

Este problema é corrigido a partir da versão 19.1 do SDK Intel® FPGA para compilador OpenCL™.

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.