LLVM et Clang s'apprêtent à faire un bond en avant avec OpenCL et CUDA
Avec l'intégration d'AMD HIP et d'OpenCL C++

Le , par dourouc05, Responsable Qt
LLVM est une bibliothèque aidant à réaliser des compilateurs, le plus connu étant probablement Clang. Ce dernier est notamment utilisé dans un certain nombre d’applications scientifiques, de par sa compatibilité avec OpenMP ou encore OpenACC. La famille comprend aussi Flang, un compilateur Fortran — un langage encore roi dans le domaine du calcul scientifique. LLVM est aussi utilisé par AMD pour développer HIP, un transpilateur de code CUDA (spécifique à NVIDIA et très utilisé) afin de l’exécuter sur les processeurs graphiques d’AMD.

Justement, ce travail est sur le point d’être intégré à Clang, afin d’exécuter du code CUDA sur les processeurs graphiques AMD sans étape extérieure (surtout que le compilateur officiel de NVIDIA est aussi maintenant basé sur Clang). Une des premières étapes est de marquer les GPU AMD comme compatibles avec CUDA, ce qui a été fait il y a deux semaines, après un certain temps de discussion. D’autres modifications sont toujours en discussion avant une intégration à Clang pour gérer le code généré par HIP.

Côté OpenCL, la version 2.2 de la norme commence à infuser dans Clang. Cela signifie principalement qu’il deviendra très bientôt possible d’utiliser du code C++14 dans du code prévu pour être déchargé sur un accélérateur (comme une carte graphique). La première étape est déjà franchie : l’option -std=c++ est comprise par Clang pour du code OpenCL. Le code actuel pour le reste de l’implémentation est déjà assez vieux (il date de 2016) et son intégration débuteil est en même temps retravaillé au niveau de l’intégration avec SPIR-V, la représentation intermédiaire de code prévue tant pour les applications graphiques (Vulkan) que de calcul (OpenCL).


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de captaindidou captaindidou - Membre confirmé https://www.developpez.com
le 21/04/2018 à 7:46
Excitant !

clang est en train de prendre mon coeur au détriment de gcc surtout que concernant OpenACC, gcc ne prend pas en charge les GPU < GT 720.

D'autre part, à moins d'un sursaut de l'équipe gcc, je sens que blender 3D va devoir basculer sur clang s'il veut s'épargner des efforts de portage CUDA -> AMD. Cela se fait sans effort sur OS Posix, pour l'avoir fait. Reste à voir sur Windows. Mais étant donné que clang a une interface compatible avec le compilateur C++ de Windows, ça devrai le faire.

J'aime aussi beaucoup clang à cause de sa librairie libclang d'accès à l' AST C++.
Avatar de Steinvikel Steinvikel - Membre actif https://www.developpez.com
le 24/04/2018 à 8:21
Clang n'a t-il pas aussi libtcc (Tiny C Compiler ?) pour de la compilation à la voler de code C ?

Quels étaient les points critiques (pour ton usage) t'ayant fait adopté GCC plutôt que Clang à l'époque du duo naissant ?
Les avantage que l'un a sur l'autre ne sont t-il pas éphémères ? (un coup l'un a le dessus, un coup c'est l'autre)... ou bien y a t-il une tendance qui se dégage permettant de penser Clang s'imposera définitivement sur GCC ?

J'ai très peu suivi l'actualité des compilateurs, mais à te lire, certains points semblent très limitant lors du choix de son outil de production, alors que le but qu'ils servent semble le même. ^^'
Clang à l'air d'avoir un dynamisme de développement plus fort que GCC. Une simple impression ?
Responsable bénévole de la rubrique HPC : Thibaut Cuvelier -