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

Por que o SDK FPGA para compilador OpenCL™ trava e nunca é encerrado com kernels NDRange que contêm fluxo de controle dependente de thread ou operações de canal?

Ambiente

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

O FPGA SDK for OpenCL™ compiler oferece uma garantia de que as declarações em um kernel NDRange são executadas por threads na ordem de seus identificadores de thread. Para garantir que a garantia seja atendida em programas que contêm fluxo de controle dependente de thread, uma barreira de reordenação é inserida pelo compilador no ponto de união de caminhos de controle dependentes do thread. Uma falha na configuração de tais barreiras faz com que a computação pare na barreira sem possibilidade de progresso futuro.

As operações de canal também podem causar esta paralisação.

Mostrado abaixo está um exemplo de uma "construção de fluxo de controle dependente de thread":


Obtenha a ID da thread global

int id = get_global_id(0);

Certifique-se de que não sairemos dos limites

se (id < n)

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

Aqui, a declaração se a declaração é uma construção de fluxo de controle que depende do thread, ou seja, o que ele faz depende de qual thread a executa.

Resolução

Escreva novamente o kernel NDRange para não conter nenhuma operação de canal ou construções de fluxo de controle dependentes do thread.

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.