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
  • Intel® FPGA SDK para OpenCL™
  • 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®

    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 prevalecerá e será a determinante. Exibir a versão em inglês desta página.