Este exemplo demonstra uma implementação de uma linguagem de computação aberta (OpenCLTM)de uma computação de diferença finita 3D somente para esteclinas. Em uma computação de stencil de ordemK, cada ponto de saída é uma função de 3k+1 pontos de entrada(k pontos adjacentes em cada direção). Devido à estrutura da computação, há uma quantidade significativa de reutilização de dados em diferentes pontos de saída, levando a otimizações que tentam minimizar acessos redundantes de memória.
O kernel neste exemplo aproveita a reutilização de dados usando um padrão de computação de volume deslizante (o analógico 3D do padrão de design da janela deslizante) para reduzir os requisitos de largura de banda de memória em comparação com implementações tradicionais do OpenCL. Detalhes adicionais podem ser encontrados no pacote de exemplo.
Desempenho de computação de diferença finita 3D
Pedido de Stencil |
Tamanho do volume |
Milhões de pontos/s |
---|---|---|
8 |
384x384x384 |
2200 |
Características
- Volume deslizante 3D eficiente
- Kernel de item de trabalho único
Downloads
O exemplo de projeto fornece código fonte para o dispositivo OpenCL (.cl), bem como para o aplicativo host. Para compilar o aplicativo host, o pacote Linux* inclui um makefile e o pacote Windows* inclui um projeto do Microsoft Visual Studio 2010.
Os seguintes downloads são fornecidos para este exemplo:
O uso deste design é regido pelos termos e condições do contrato de licença de design de referência de hardware.
Requisitos de software e hardware
Este exemplo de projeto requer as seguintes ferramentas:
- Intel® FPGA software v17.1 ou mais recente
- Intel® FPGA SDK para OpenCL v17.1 ou mais recente
- No Linux: GNU Make e gcc
- No Windows*: Microsoft Visual Studio 2010*
Para baixar as ferramentas de design da Intel, acesse a página de downloads do OpenCL. Os requisitos para o sistema operacional subjacente são os mesmos do SDK Intel FPGA para OpenCL.
OpenCL e o logotipo OpenCL são marcas comerciais da Apple Inc. usadas com permissão pela Khronos.
* O produto é baseado em uma especificação Khronos publicada e passou no Processo de teste de conformidade Khronos. O status de conformidade atual pode ser encontrado em www.khronos.org/conformance.