De release van het PoCL 6.0-project (Portable Computing Language OpenCL) is gepubliceerd. Dit project ontwikkelt een implementatie van de OpenCL-standaard, onafhankelijk van fabrikanten van grafische versnellers, en stelt gebruikers in staat om verschillende backends te gebruiken voor het uitvoeren van OpenCL-kernen op verschillende typen grafische en centrale processors. De code van het project is beschikbaar onder de MIT-licentie. Ondersteuning voor platforms zoals X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU en verschillende gespecialiseerde ASIP (Application-Specific Instruction-set Processor) en TTA-processors (Transport Triggered Architecture) met VLIW-architectuur wordt geboden.
De implementatie van de OpenCL-kerncompiler is gebouwd op basis van LLVM, met Clang als frontend voor OpenCL C. Om de nodige draagbaarheid en prestaties te waarborgen, kan de compiler van OpenCL-kernen gecombineerde functies genereren die verschillende hardwarebronnen kunnen gebruiken voor de parallelisering van de code-uitvoering, zoals VLIW, superscalariteit, SIMD, SIMT, multi-core en multithreading. Ondersteuning voor ICD-drivers is aanwezig.
(Installable Client Driver). Er zijn backends beschikbaar voor het functioneren via CPU, ASIP (TCE/TTA), GPU's gebaseerd op HSA-architectuur en NVIDIA GPU's (via libcuda).
In de nieuwe versie:
- Ondersteuning voor Clang/LLVM 18.0 is toegevoegd, terwijl de ondersteuning voor LLVM 10, 11, 12 en 13 is stopgezet.
- Een nieuwe cpu-tbb backend is geĆÆmplementeerd, die OneTBB-bibliotheek gebruikt voor het paralleliseren van bewerkingen en het plannen van taakuitvoering, ontwikkeld door Intel.
- In de cpu backend, die het uitvoeren van OpenCL-kernen op de CPU mogelijk maakt, is ondersteuning voor de OpenMP parallelle programmeerstandaard toegevoegd, evenals de methode clGetDeviceAndHostTimer(), en experimentele uitbreidingen cl_pocl_svm_rect, cl_pocl_command_buffer_svm en cl_pocl_command_buffer_host_buffer zijn geĆÆmplementeerd.
- In de 'Remote' backend, die is ontworpen voor gedistribueerde berekeningen door OpenCL-opdrachten naar andere hosts in het netwerk te verplaatsen, waar het achtergrondproces pocld draait, is ondersteuning toegevoegd voor CG SVM (Coarse-Grain Shared Virtual Memory), de mogelijkheid om de backend te benaderen met behulp van het communicatieprotocol Vsock en ondersteuning voor het compileren en linken van programma's via de functies clCompileProgram() en clLinkProgram().
- In de LevelZero backend, die de Level Zero API gebruikt, is het toegestaan om buffers van meer dan 4GB te creëren, en zijn optimalisaties voor synchronisatieprocessen geïmplementeerd.
- In de CUDA backend zijn de operaties sub_group_shuffle en sub_group_shuffle_xor geĆÆmplementeerd, en is de limiet voor CL_DEVICE_MAX_MEM_ALLOC_SIZE verhoogd.
Bron: opennet.ru
