La version du projet PoCL 5.0 (Portable Computing Language OpenCL) a été publiée, développant une implémentation de la norme OpenCL, indépendante des fabricants de processeurs graphiques et permettant d'utiliser différents backends pour exécuter des noyaux OpenCL sur divers types de processeurs graphiques et centraux. Le code du projet est distribué sous la licence MIT. Il prend en charge les plateformes X86_64, MIPS32, ARM v7, AMD HSA APU, GPU NVIDIA et divers processeurs ASIP (Application-Specific Instruction-set Processor) et TTA (Transport Triggered Architecture) avec une architecture VLIW.
L'implémentation du compilateur de noyaux OpenCL est basée sur LLVM, et Clang est utilisé comme frontend pour OpenCL C. Pour garantir une portabilité et des performances adéquates, le compilateur de noyaux OpenCL peut générer des fonctions combinées, qui peuvent utiliser différentes ressources matérielles pour le parallélisme d'exécution du code, telles que VLIW, superscalaire, SIMD, SIMT, multicoeur et multithreading. Le support des pilotes ICD (Installable Client Driver) est également disponible. Des backends sont présents pour assurer un fonctionnement via le CPU, ASIP (TCE/TTA), GPU basé sur l'architecture HSA et GPU NVIDIA (via libcuda).
Dans la nouvelle version :
- Un nouveau backend « Remote » a été implémenté, destiné à organiser des calculs distribués en déportant le traitement des commandes OpenCL sur d'autres hÎtes du réseau, sur lesquels un processus en arriÚre-plan pocld est en cours d'exécution.
- Le pilote CUDA a implémenté des fonctionnalités supplémentaires et des extensions OpenCL 3.0, telles que des opérations atomiques, des variables à portée limitée, des sous-groupes intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier et sub_group_ballot.
- Le support du CPU basé sur l'architecture RISC-V a été amélioré. Le fonctionnement de PoCL a été testé sur la carte Starfive VisionFive 2 avec l'environnement Ubuntu 23.10, utilisant LLVM 17 et GCC 13.2.
- L'extension cl_ext_float_atomics a été réalisée avec le support de FP32 et FP64.
- L'implémentation de l'extension cl_khr_command_buffer a été mise à jour vers la version 0.9.4.
- Un backend expérimental AlmaIF pour FPGA a été proposé.
- Le support non terminé du langage intermédiaire de shaders SPIR 1.x/2.0 a été supprimé. SPIR-V a été désigné comme le langage intermédiaire de shaders recommandé.
- Le support de Clang/LLVM 17.0 a été ajouté. Le support de Clang/LLVM 10-13 a été déclaré obsolÚte.
Source : opennet.ru
