Implementando aplicativos OpenCL em aceleradores baseados em FPGA

O site da Altera possui vários exemplos que demonstram como descrever aplicações em OpenCL, juntamente com as respectivas aplicações de host, que você pode compilar e executar em um host com uma placa FPGA com suporte ao SDK deles.

Cada exemplo está disponível em duas versões uma para Linux (‘.tar.gz’) e outra para Windows (‘.zip’). Também é disponibilizado uma lista de requisitos mínimos de software e hardware e um arquivo ‘readme.txt’ com informações importantes sobre o exemplo. Dentre as informações importantes, destacamos a versão do Quartus II compatível e recomendações de parâmetros de otimização.

  1. Realizando a síntese do arquivo ‘.cl’:
    • baixar algum dos exemplos disponíveis no site da Altera para OpenCL;
    • extrair o arquivo compactado. Nele existem duas pastas uma ‘common’ e uma com o nome do exemplo que você baixou, como por exemplo: ‘vector_add’;
    • você deve executar a síntese do arquivo ‘.cl’ usando o compilador OpenCL da Altera através do comando básico:
      aoc nome_do_arquivo.cl
    • o comando ‘aoc’ possui os seguintes parâmetros de execução:
      • –board : seleciona um dispositivo específico, caso só exista apenas um instalado não é necessário especificar o hardware. Exemplo: –board pcie385n_a7
      • –list-boards : printa uma lista de placas disponíveis
    • comandos de otimização:
      dependendo da aplicação a ser executada e das suas prioridades você pode querer usar um ou mais parâmetros de otimização disponíveis:

      • -fp-relaxed=true : relaxa a ordem dos operadores aritméticos de ponto flutuante. O programa deve ser capaz de tolerar pequenas diferenças nos resultados de ponto flutuante.
      • -fpc=true : direciona o AOC para remover operações de arredondamento intermediário de ponto flutuante e conversões sempre que possível.
      • –sw-dimm-partition : configura a memória global com espaços de endereços separados. Depois de configurar a memória global, alocar cada buffer em um banco ou
        outro cl_mem_flags Altera-específico (por exemplo, CL_MEM_BANK_2_ALTERA).
      • –const-cache-bytes : configura o tamanho do cache constante em bytes, arredondados para o próximo da base dois. Não haverá nenhum efeito se nenhum dos kernels usa o espaço de endereço __constant. O tamanho do cache constante padrão é de 16 kilobytes (KB). Por exemplo, para configurar um cache de 32 kB, digite o comando ‘aoc’
        –const–cache bytes 32768 myKernel.cl
      • -O3 : direciona recursos de otimização de desempenho para melhoramento, estimativa lógica utilizada é menor ou igual a 85%.
      • –util : ultrapassa o limite de utilização lógica usada pelo opção -O3 com %.
    • arquivos gerados:
      • arquivos de log: uso de recursos estimados, rendimento estimado (se habilitado), e compila mensagens;
      • arquivos do Quartus: cria arquivos de origem, relatório do tempo, etc.
        Para rever o resumo de utilização de recursos estimados na tela, compilar o kernel, incluindo o –report em seu comando ‘aoc’. Alternativamente, rever o uso da área real reportado pelo Quartus® no arquivo: /acl_quartus_report.txt.
  2. Transferência de Síntese para a Placa FPGA:
    Ao realizar a síntese com o compilador AOC será gerado um arquivo ‘.aocx’ e ‘.aoco’. Os kernels são compilados off-line usando o Altera Offline Compiler (AOC). O kernel é primeiramente traduzido pela primeira vez em um arquivo objeto AOC (‘.aoco’) que representa o sistema de hardware FPGA;
    o arquivo ‘.aoco’ é usado para gerar o arquivo executável AOC (‘.aocx’), usado para programar o FPGA. Deve ser feita a transferência da síntese para o dispositivo FPGA através do comando ‘aocl’

     aocl flash arquivo.aocx

    obs: o parâmetro ‘flash’ faz a transferência do código compilado pra memória flash da FPGA.

    • outros parâmetros do aocl:
      • aocl diagnostic: testa e gera diagnóstico da sua placa FPGA, por segurança extra você pode executar o comando antes de realizar a transferência de síntese com o aocl

Referências:

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s