Utgivelse av PoCL 5.0 med uavhengig implementering av OpenCL-standarden

Utgivelsen av PoCL 5.0-prosjektet (Portable Computing Language OpenCL) har blitt publisert, og utvikler en implementering av OpenCL-standarden som er uavhengig av produsenter av grafikkakseleratorer og tillater bruk av ulike backends for å utføre OpenCL-kjerner på forskjellige typer grafikk og sentrale prosessorer . Prosjektkoden distribueres under MIT-lisensen. Støtter arbeid på plattformene X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU og forskjellige spesialiserte ASIP (Application-Specific Instruction-set Processor) og TTA (Transport Triggered Architecture) prosessorer med VLIW-arkitektur.

Implementeringen av OpenCL-kjernekompilatoren er bygget på grunnlag av LLVM, og Clang brukes som frontend for OpenCL C. For å sikre riktig portabilitet og ytelse, kan OpenCL-kjernekompilatoren generere kombinasjonsfunksjoner som kan bruke ulike maskinvareressurser for å parallellisere kodekjøring, slik som VLIW, superscalar, SIMD, SIMT, multi-core og multi-threading. Det er støtte for ICD-drivere (Installable Client Driver). Det er backends for å støtte drift via CPU, ASIP (TCE/TTA), GPU basert på HSA-arkitektur og NVIDIA GPU (via libcuda).

I den nye versjonen:

  • En ny "Remote" backend har blitt implementert, designet for å organisere distribuert databehandling ved å overføre behandlingen av OpenCL-kommandoer til andre verter på nettverket som kjører bakgrunns-pocld-prosessen.
  • CUDA-driveren implementerer tilleggsfunksjoner og utvidelser av OpenCL 3.0, slik som atomoperasjoner, scoped variabler, intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier og sub_group_ballot.
  • Forbedret støtte for CPUer basert på RISC-V-arkitekturen. PoCL-operasjonen ble testet på Starfive VisionFive 2-kortet lastet med Ubuntu 23.10-miljø med LLVM 17 og GCC 13.2.
  • cl_ext_float_atomics-utvidelsen er implementert med støtte for FP32 og FP64.
  • Implementeringen av utvidelsen cl_khr_command_buffer har blitt oppdatert til versjon 0.9.4.
  • En eksperimentell AlmaIF-backend for FPGA-er har blitt foreslått.
  • Fjernet ufullstendig støtte for mellomrepresentasjon av SPIR 1.x/2.0 shaders. SPIR-V er deklarert som det anbefalte mellomskyggespråket.
  • Lagt til støtte for Clang/LLVM 17.0. Støtte for Clang/LLVM 10-13 er avviklet.

Kilde: opennet.ru

Legg til en kommentar