PoCL 1.6, uma implementação autônoma do padrão OpenCL

O lançamento de a nova versão do projeto PoCL 1.6 (Portable Computing Language OpenCL), dos destaques da versão 1.6 é o suporte para Clang / LLVM 11.0, bem como o trabalho realizado para melhorar o desempenho e funções do CUDA, compatibilidade aprimorada com PowerPC e melhor uso de depuração OpenCL.

Para aqueles não familiarizados com PoCL, você deve saber o que é uma implementação de código aberto portátil (licenciado pelo MIT) do padrão OpenCL (1.2 com alguns recursos 2.0 suportados). Além de ser uma implementação OpenCL de código aberto para vários dispositivos (verdadeiramente heterogêneo) facilmente portátil, um objetivo principal deste projeto é melhorar a interoperabilidade da diversidade de dispositivos compatíveis com OpenCL integrando-os em uma única plataforma orquestrada centralmente.

Além disso, um dos principais objetivos de longo prazo é melhorar a portabilidade do desempenho de programas OpenCL em tipos de dispositivos que usam técnicas de tempo de execução e compilação.

O compilador de kernel OpenCL é baseado em LLVM e Clang é usado como interface para OpenCL C. Para fornecer portabilidade e desempenho adequados, o compilador de kernel OpenCL pode gerar funções combinadas que podem usar vários recursos de hardware para paralelizar a execução de código , como VLIW, superescalar, SIMD, SIMT, multi-core e multi-threaded. Há suporte para drivers ICD (driver de cliente instalável). Existem back-ends para fornecer trabalho por meio de CPU, ASIP (TCE / TTA), GPU baseada na arquitetura HSA e GPU NVIDIA (CUDA).

Principais novos recursos do PoCL 1.6

Esta nova versão do PoCL 1.6 destaca a capacidade de compilar esta implementação com drivers de dispositivo habilitados no momento da compilação, bem como a disponibilidade do dispositivo será verificada na inicialização (anteriormente, os sistemas nos quais o PoCL é construído e executado eles deveriam ter o mesmo suporte de controlador). Implementada a capacidade de usar o gerenciador de pacotes conda para distribuir pacotes binários PoCL com suporte CUDA para sistemas Linux-x86_64 e Linux-ppc64le.

Outra mudança que se destaca é o suporte para LLVM 11 junto com as possibilidades expandidas de depuração de código OpenCL ao usar o controlador da CPU.

Além disso, deve-se destacar que foi realizada a otimização do desempenho do backend CUDA, o que agilizou significativamente as operações relacionadas ao uso de memória local (FFT, GEMM).

Benchmarks usando benchmarks SHOC (que agora são continuamente testados mostram que essas otimizações resultaram em um desempenho muito melhor, particularmente para benchmarks envolvendo memória local, como FFT e GEMM, em comparação com uma execução de PoCL agora frequentemente atinge desempenho competitivo com driver OpenCL proprietário da Nvidia). Aceitamos contribuições para identificar e eliminar as causas raízes das demais áreas problemáticas. Também agradecemos contribuições para melhorar a cobertura de recursos para os padrões OpenCL 1.2 / 3.0.

  • O desempenho do PoCL em muitos testes está agora próximo do driver OpenCL proprietário da NVIDIA.
  • Adicionado o parâmetro de compilação HARDENING_ENABLE para habilitar as opções do compilador para gerar um libpocl.so mais seguro ao custo da degradação do desempenho.
  • Retornou o suporte para sistemas PowerPC 8/9, para os quais o nível de implementação OpenCL ao usar dispositivos pthread e CUDA corresponde ao nível CUDA em sistemas x86_64.
  • ABI alterado para kernels CUDA que usam __ blocos locais. Após a atualização, os usuários precisam limpar o cache do pocl.
  • O suporte para a opção de construção SINGLE_LLVM_LIB foi removido, em vez de usar STATIC_LLVM e llvm-config para definir quais bibliotecas ligar.

Finalmente, se você quiser saber mais sobre esta nova versão, você pode verificar os detalhes no anúncio original. 

Enquanto para aqueles interessados ​​em saber mais sobre esta implementação, eles podem consultar o site oficial deste, onde você pode encontrar a documentação e baixar arquivos.

O código do projeto é distribuído sob a licença MIT e o trabalho é suportado nas plataformas X86_64, MIPS32, ARM v7, AMD HSA APU e vários processadores TTA especializados com a arquitetura VLIW.


Seja o primeiro a comentar

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.