O site da Altera [www.altera.com]
possui vários exemplos que demonstram como descrever várias aplicações em
OpenCL, juntamente com as referentes aplicações de host, que você pode compilar
e executar em um host com placa FPGA com suporte ao SDK Altera
Cada exemplo da Altera
está disponível em duas versões uma para Linux, em tar.gz e outra para Windows,
em .zip, além de disponibilizar uma lista dos requisitos mínimos de software e
hardware e um readme.txt com informações sobre o exemplo, a execução, a versão
do Quartus compatível, dependendo da complexidade há também recomendações de
paramentos de otimização para o exemplos.
I. Realizando
Síntese do arquivo .cl
- Baixar algum dos exemplos disponíveis no site da Altera para OpenCL [http://www.altera.com/support/examples/opencl/opencl.html]
- O arquivo compactado deve ser extraído nele existem duas pastas uma “commom”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 AOC através do comando básico:
aoc nome_do_arquivo.cl
--board <modelo da placa> : seleciona um dispositivo específico, caso só exista um
instalado não é necessário especificar o hardware. Ex --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ética 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 ftlutuante e conversões sempre que possível.
--sw-dimm-partition : Configura a memória global como 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).
outro cl_mem_flags Altera-específico (por exemplo, CL_MEM_BANK_2_ALTERA).
--const-cache-bytes <N> : 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 <N> : Ultrapassa o
limite de utilização lógica usada pelo opção -O3 com <N>%.
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 relatado pelo software Quartus® no
arquivo:
<o_nome_do_seu_kernel>/acl_quartus_report.txt.
Ao realizar a síntese com
o compilador AOC será gerado um arquivo .aocx e .aoco
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
*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:
http://www.altera.com/literature/hb/opencl-sdk/aocl_programming_guide.pdf
http://www.altera.com/literature/hb/opencl-sdk/aocl_optimization_guide.pdf
Nenhum comentário:
Postar um comentário