Utgivningen av projektet PoCL 6.0 (Portable Computing Language OpenCL), som utvecklar en implementation av OpenCL-standarden som Àr oberoende av grafikkortsproducenter och gör det möjligt att anvÀnda olika backend-lösningar för att köra OpenCL-kÀrnor pÄ olika typer av grafiska och centrala processorer, har publicerats. Koden för projektet distribueras under MIT-licensen. Plattformar som stöds inkluderar X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU och olika specialiserade ASIP (Application-Specific Instruction-set Processor) och TTA-processorer (Transport Triggered Architecture) med VLIW-arkitektur.
Implementation av OpenCL-kÀrnkompilatorn bygger pÄ LLVM, medan Clang anvÀnds som frontend för OpenCL C. För att sÀkerstÀlla lÀmplig portabilitet och prestanda kan kompilatorn för OpenCL-kÀrnor generera kombinerade funktioner som kan anvÀnda olika hÄrdvaruresurser för att parallellisera körningen av koden, sÄsom VLIW, superskalÀr, SIMD, SIMT, flerprocessorkonstruktion och flertrÄdad körning. ICD-drivrutiner stöds.
(Installable Client Driver). Backend-lösningar finns för att möjliggöra drift via CPU, ASIP (TCE/TTA), GPU baserade pÄ HSA-arkitekturen och NVIDIA GPU (via libcuda).
I den nya versionen:
- Stödet för Clang/LLVM 18.0 har lagts till, medan stödet för LLVM 10, 11, 12 och 13 har upphört.
- En ny cpu-tbb backend har implementerats, vilket anvÀnder OneTBB-biblioteket, utvecklat av Intel, för att parallellisera operationer och schemalÀgga körningen av uppgifter.
- I cpu-backenden, som möjliggör körning av OpenCL-kÀrnor pÄ CPU, har stöd för den parallella programmeringsstandarden OpenMP lagts till, metoden clGetDeviceAndHostTimer() har lagts till, samt experimentella tillÀgg som cl_pocl_svm_rect, cl_pocl_command_buffer_svm och cl_pocl_command_buffer_host_buffer har implementerats.
- I backend "Remote", som syftar till att organisera distribuerade berÀkningar genom att flytta bearbetning av OpenCL-kommandon till andra vÀrdar i nÀtverket dÀr bakgrundsprocessen pocld körs, har stöd för CG SVM (Coarse-Grain Shared Virtual Memory) lagts till, möjligheten att nÄ backend med kommunikationsprotokollet Vsock har lagts till och stöd för kompilering och lÀnkning av program genom funktionerna clCompileProgram() och clLinkProgram() har implementerats.
- I LevelZero-backenden, som anvÀnder Level Zero API, har det blivit möjligt att skapa buffertar som Àr större Àn 4 GB och optimeringar av synkroniseringsprocesserna har implementerats.
- I CUDA-backenden har operationer sÄsom sub_group_shuffle och sub_group_shuffle_xor implementerats, och grÀnsen för CL_DEVICE_MAX_MEM_ALLOC_SIZE har ökat.
KĂ€lla: opennet.ru
