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

La version du projet PoCL 5.0 (Portable Computing Language OpenCL) a été publiée, développant une implémentation du standard OpenCL indépendante des fabricants d'accélérateurs graphiques et permettant l'utilisation de divers backends pour exécuter les noyaux OpenCL sur différents types de graphiques et de processeurs centraux. . 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:

  • Un nouveau backend « Remote » a été implémenté, conçu pour organiser l'informatique distribuée en transférant le traitement des commandes OpenCL vers d'autres hôtes du réseau exécutant le processus pocld en arrière-plan.
  • Le pilote CUDA implémente des fonctionnalités et extensions supplémentaires d'OpenCL 3.0, telles que les opérations atomiques, les variables étendues, intel_sub_group_shuffle, intel_sub_group_shuffle_xor, get_sub_group_local_id, sub_group_barrier et sub_group_ballot.
  • Prise en charge améliorée des processeurs basés sur l'architecture RISC-V. Le fonctionnement de PoCL a été testé sur la carte Starfive VisionFive 2 chargée avec l'environnement Ubuntu 23.10 avec LLVM 17 et GCC 13.2.
  • L'extension cl_ext_float_atomics a été implémentée avec la prise en charge 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 les FPGA a été proposé.
  • Suppression de la prise en charge incomplète de la représentation intermédiaire des shaders SPIR 1.x/2.0. SPIR-V est déclaré comme langage de shader intermédiaire recommandé.
  • Ajout de la prise en charge de Clang/LLVM 17.0. La prise en charge de Clang/LLVM 10-13 est obsolète.

Source: opennet.ru

Ajouter un commentaire