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

En version av projektet PoCL 3.1 (Portable Computing Language OpenCL) har presenterats, som utvecklar en implementering av OpenCL-standarden som är oberoende av grafikacceleratortillverkare och tillåter användning av olika backends för att exekvera 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:

  • Lade till stöd för Clang/LLVM 15.0.
  • Betydligt förbättrat SPIR-V shader-mellanrepresentationsstöd för CPU- och CUDA-drivrutiner.
  • Drivrutinen för specialiserad hårdvara (CL_DEVICE_TYPE_ACCELERATOR) och anpassade enheter (CL_DEVICE_TYPE_CUSTOM) som inte stöder onlinekompilering har gjorts om avsevärt. Accel- och ttasim-drivrutinerna har slagits samman till den nya AlmaIF-drivrutinen.
  • Arbetet fortsätter med drivrutinen för Vulkans grafik-API.
  • En grundläggande implementering av tillägget cl_khr_command_buffer föreslås, vilket låter dig skriva en sekvens av OpenCL-kommandon för exekvering i ett anrop.

Källa: opennet.ru

Lägg en kommentar