Sortie de PoCL 3.0 avec implémentation indépendante du standard OpenCL 3.0

Une version du projet PoCL 3.0 (Portable Computing Language OpenCL) a été présentée, qui développe une implémentation du standard OpenCL indépendante des fabricants d'accélérateurs graphiques et permet l'utilisation de divers backends pour exécuter les noyaux OpenCL sur différents types de graphiques et de centrales. processeurs. Le code du projet est distribué sous licence MIT. Prend en charge le travail sur les plates-formes X86_64, MIPS32, ARM v7, AMD HSA APU, NVIDIA GPU et divers processeurs spécialisés ASIP (Application-Specific Instruction-set Processor) et TTA (Transport Triggered Architecture) avec architecture VLIW.

L'implémentation du compilateur du noyau OpenCL est construite sur la base de LLVM et Clang est utilisé comme frontal pour OpenCL C. Pour garantir une portabilité et des performances appropriées, le compilateur du noyau OpenCL peut générer des fonctions combinées pouvant utiliser diverses ressources matérielles pour paralléliser l'exécution de code, telles que VLIW, superscalaire, SIMD, SIMT, multicœur et multithreading. Il existe une prise en charge des pilotes ICD (Installable Client Driver). Il existe des backends pour prendre en charge le fonctionnement via CPU, ASIP (TCE/TTA), GPU basé sur l'architecture HSA et NVIDIA GPU (via libcuda).

Dans la nouvelle version:

  • L'ensemble minimum de fonctionnalités requis pour prendre en charge la spécification OpenCL 3.0 a été implémenté. La prise en charge d'OpenCL 3.0 n'est actuellement disponible que sur les backends basés sur CPU avec LLVM 14 (d'autres backends et les anciennes versions de LLVM prennent en charge OpenCL 1.2).
  • Ajout de la prise en charge de Clang/LLVM 14.
  • Traçage et visualisation améliorés.
  • Ajout de la prise en charge de la génération de groupes spécialisés de fonctions et de leur inclusion dans des fichiers exécutables avec les noyaux OpenCL.

Source: opennet.ru

Ajouter un commentaire