PoCL 5.0-release med en oberoende implementering av OpenCL-standarden

Utgivningen av PoCL 5.0-projektet (Portable Computing Language OpenCL) har publicerats och utvecklar en implementering av OpenCL-standarden som är oberoende av grafikacceleratortillverkare och tillåter användning av olika backends för att köra OpenCL-kärnor på olika typer av grafik och centrala processorer . Projektkoden distribueras under MIT-licensen. Stöder arbete på plattformarna X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU och olika specialiserade ASIP (Application-Specific Instruction-set Processor) och TTA (Transport Triggered Architecture)-processorer med VLIW-arkitektur.

Implementeringen av OpenCL-kärnkompilatorn är byggd på basis av LLVM, och Clang används som frontend för OpenCL C. För att säkerställa korrekt portabilitet och prestanda kan OpenCL-kärnkompilatorn generera kombinationsfunktioner som kan använda olika hårdvaruresurser för att parallellisera kodexekvering, såsom VLIW, superskalär, SIMD, SIMT, multi-core och multi-threading. Det finns stöd för ICD-drivrutiner (Installable Client Driver). Det finns backends för att stödja drift via CPU, ASIP (TCE/TTA), GPU baserad på HSA-arkitektur och NVIDIA GPU (via libcuda).

I den nya versionen:

  • En ny "fjärr"-backend har implementerats, designad för att organisera distribuerad datoranvändning genom att överföra bearbetningen av OpenCL-kommandon till andra värdar i nätverket som kör bakgrunds-pocld-processen.
  • CUDA-drivrutinen implementerar ytterligare funktioner och tillägg av OpenCL 3.0, såsom atomoperationer, scoped variabler, intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier och sub_group_omröstning.
  • Förbättrat stöd för processorer baserat på RISC-V-arkitekturen. PoCL-driften testades på Starfive VisionFive 2-kortet laddat med Ubuntu 23.10-miljö med LLVM 17 och GCC 13.2.
  • Tillägget cl_ext_float_atomics har implementerats med stöd för FP32 och FP64.
  • Implementeringen av tillägget cl_khr_command_buffer har uppdaterats till version 0.9.4.
  • En experimentell AlmaIF-backend för FPGA har föreslagits.
  • Tog bort ofullständigt stöd för mellanrepresentation av SPIR 1.x/2.0 shaders. SPIR-V deklareras som det rekommenderade mellanliggande shader-språket.
  • Lade till stöd för Clang/LLVM 17.0. Stöd för Clang/LLVM 10-13 har fasats ut.

Källa: opennet.ru

Lägg en kommentar