Frigivelse af PoCL 5.0 med uafhængig implementering af OpenCL-standarden

Udgivelsen af ​​PoCL 5.0-projektet (Portable Computing Language OpenCL) er blevet offentliggjort, der udvikler en implementering af OpenCL-standarden, der er uafhængig af grafikacceleratorproducenter og tillader brugen af ​​forskellige backends til at udføre OpenCL-kerner på forskellige typer grafik og centrale processorer . Projektkoden distribueres under MIT-licensen. Understøtter arbejde på platforme X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU og forskellige specialiserede ASIP (Application-Specific Instruction-set Processor) og TTA (Transport Triggered Architecture)-processorer med VLIW-arkitektur.

Implementeringen af ​​OpenCL-kernekompileren er bygget på basis af LLVM, og Clang bruges som frontend for OpenCL C. For at sikre korrekt portabilitet og ydeevne kan OpenCL-kernekompileren generere kombinationsfunktioner, der kan bruge forskellige hardwareressourcer til at parallelisere kodeudførelse, såsom VLIW, superscalar, SIMD, SIMT, multi-core og multi-threading. Der er understøttelse af ICD-drivere (Installable Client Driver). Der er backends til at understøtte drift via CPU, ASIP (TCE/TTA), GPU baseret på HSA-arkitektur og NVIDIA GPU (via libcuda).

I den nye version:

  • En ny "Remote" backend er blevet implementeret, designet til at organisere distribueret databehandling ved at overføre behandlingen af ​​OpenCL-kommandoer til andre værter på netværket, der kører baggrunds-pocld-processen.
  • CUDA-driveren implementerer yderligere OpenCL 3.0-funktioner og udvidelser såsom atomoperationer, scoped variabler, intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier og sub_group_ballot.
  • Forbedret understøttelse af CPU'er baseret på RISC-V-arkitekturen. PoCL-driften blev testet på Starfive VisionFive 2-kortet fyldt med Ubuntu 23.10-miljø med LLVM 17 og GCC 13.2.
  • cl_ext_float_atomics-udvidelsen er blevet implementeret med understøttelse af FP32 og FP64.
  • Implementeringen af ​​cl_khr_command_buffer-udvidelsen er blevet opdateret til version 0.9.4.
  • En eksperimentel AlmaIF-backend til FPGA'er er blevet foreslået.
  • Fjernet ufuldstændig understøttelse af mellemrepræsentation af SPIR 1.x/2.0 shaders. SPIR-V er erklæret som det anbefalede mellemliggende shader-sprog.
  • Tilføjet understøttelse af Clang/LLVM 17.0. Understøttelse af Clang/LLVM 10-13 er blevet forældet.

Kilde: opennet.ru

Tilføj en kommentar