La version 3.0 du projet PoCL (Portable Computing Language OpenCL) a Ă©tĂ© prĂ©sentĂ©e, dĂ©veloppant une mise en Ćuvre de la norme OpenCL, indĂ©pendante des fournisseurs d'accĂ©lĂ©rateurs graphiques et permettant d'utiliser diffĂ©rents backends pour exĂ©cuter des noyaux OpenCL sur diffĂ©rents types de processeurs graphiques et centraux. Le code du projet est distribuĂ© sous la licence MIT. La prise en charge est disponible sur 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 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 ensemble minimal de fonctionnalités nécessaires pour prendre en charge la spécification OpenCL 3.0 a été implémenté. La prise en charge d'OpenCL 3.0 est pour l'instant uniquement disponible dans le backend basé sur le CPU en présence de LLVM 14 (dans les autres backends et avec les anciennes versions de LLVM, la prise en charge d'OpenCL 1.2 est fournie).
- Prise en charge ajoutée pour Clang/LLVM 14.
- Amélioration de la traçabilité et de la visualisation.
- Ajout de la prise en charge de la génération de groupes de fonctions spécialisés et leur inclusion dans les fichiers exécutables avec des noyaux OpenCL.
Source : opennet.ru
