La version 3.1 du projet PoCL (Portable Computing Language OpenCL) a été présentée, développant l'implémentation du standard OpenCL, indépendante des fabricants de processeurs graphiques et permettant d'utiliser différents backends pour exécuter les noyaux OpenCL sur divers types de processeurs graphiques et centraux. Le code du projet est distribué sous licence MIT. La prise en charge est assurée sur les plateformes X86_64, MIPS32, ARM v7, AMD HSA APU, GPU NVIDIA et divers ASIP (Application-Specific Instruction-set Processor) et processeurs TTA (Transport Triggered Architecture) avec 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 :
- Ajout de la prise en charge de Clang/LLVM 15.0.
- Amélioration significative de la prise en charge de la représentation intermédiaire des shaders SPIR-V pour les pilotes utilisant le CPU et CUDA.
- Refonte significative du pilote pour le matériel spécialisé (CL_DEVICE_TYPE_ACCELERATOR) et des dispositifs personnalisés (CL_DEVICE_TYPE_CUSTOM), ne prenant pas en charge la compilation en ligne. Les pilotes accel et ttasim ont été combinés dans un nouveau pilote AlmaIF.
- Poursuite des travaux sur le pilote pour l'API graphique Vulkan.
- Proposition d'une implémentation de base de l'extension cl_khr_command_buffer, permettant d'enregistrer une séquence de commandes OpenCL pour leur exécution en un seul appel.
Source : opennet.ru
