ID do artigo: 000073934 Tipo de conteúdo: Solução de problemas Última revisão: 02/10/2019

Por que o Intel® FPGA SDK para compilador OpenCL™ é travado e nunca termina com kernels NDRange que contêm fluxo de controle dependente de threads ou operações de canal?

Ambiente

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

    O Intel® FPGA SDK para compilador OpenCL™ oferece uma garantia de que as declarações em um kernel NDRange são executadas por threads em ordem de seus identificadores de thread. Para garantir que a garantia seja atendida em programas que contêm fluxo de controle dependente de threads, uma barreira de re-pedidos é inserida pelo compilador no ponto de junção dos caminhos de fluxo de controle dependentes de threads. Uma falha na configuração de tais barreiras faz com que a computação se estagnar na barreira sem possibilidade de avançar.

    As operações do canal também podem causar essa paralisação.

    Mostrado abaixo é um exemplo de uma "construção de fluxo de controle dependente de threads":

       
    Obtenha iD de thread global

    id int = get_global_id(0);

    Certifique-se de que não sairemos dos limites

    se (id < n)

    c[id] = a[id] b[id];

     

    Aqui, a instrução if é uma construção de fluxo de controle que depende do thread, ou seja, o que ela faz depende de qual thread a executa.

    Resolução

    Reescrevê-lo para que o kernel NDRange não contenha quaisquer operações de canal ou construções de fluxo de controle dependentes de threads.

     

    Este problema está programado para ser corrigido em uma versão futura do Intel® FPGA SDK para software 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.