Lançamento do PoCL 5.0 com implementação independente do padrão OpenCL

Foi publicado o lançamento do projeto PoCL 5.0 (Portable Computing Language OpenCL), que desenvolve uma implementação do padrão OpenCL que é independente de fabricantes de aceleradores gráficos e permite o uso de diversos backends para execução de kernels OpenCL em diferentes tipos de gráficos e processadores centrais . O código do projeto é distribuído sob a licença do MIT. Suporta trabalho em plataformas X86_64, MIPS32, ARM v7, AMD HSA APU, GPU NVIDIA e vários processadores especializados ASIP (Application-Specific Instruction-set Processor) e TTA (Transport Triggered Architecture) com arquitetura VLIW.

A implementação do compilador de kernel OpenCL é construída com base no LLVM e o Clang é usado como front end para OpenCL C. Para garantir portabilidade e desempenho adequados, o compilador do 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-threading. Há suporte para drivers ICD (driver de cliente instalável). Existem backends para suportar operação via CPU, ASIP (TCE/TTA), GPU baseada na arquitetura HSA e GPU NVIDIA (via libcuda).

Na nova versão:

  • Um novo backend “Remoto” foi implementado, projetado para organizar a computação distribuída, transferindo o processamento de comandos OpenCL para outros hosts na rede executando o processo pocld em segundo plano.
  • O driver CUDA implementa recursos e extensões adicionais do OpenCL 3.0, como operações atômicas, variáveis ​​com escopo definido, intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier e sub_group_ballot.
  • Suporte aprimorado para CPUs baseadas na arquitetura RISC-V. A operação PoCL foi testada na placa Starfive VisionFive 2 carregada com ambiente Ubuntu 23.10 com LLVM 17 e GCC 13.2.
  • A extensão cl_ext_float_atomics foi implementada com suporte para FP32 e FP64.
  • A implementação da extensão cl_khr_command_buffer foi atualizada para a versão 0.9.4.
  • Um backend experimental do AlmaIF para FPGAs foi proposto.
  • Removido suporte incompleto para representação intermediária de shaders SPIR 1.x/2.0. SPIR-V é declarado como a linguagem de shader intermediária recomendada.
  • Adicionado suporte para Clang/LLVM 17.0. O suporte para Clang/LLVM 10-13 foi descontinuado.

Fonte: opennet.ru

Adicionar um comentário