Cling est un interpréteur C++ basé sur le compilateur Clang. Ce projet a été lancé par le CERN afin de fournir un environnement de développement très productif en C++ : on peut ainsi, dans une console, taper une expression C++, définir une fonction, etc., puis l’exécuter dans la console, sans passer par une étape de compilation explicite. Ce genre d’interface peut faciliter l’apprentissage du langage par des personnes ne le maîtrisant pas, mais aussi rend possible la création de scripts en C++. Cling fournit aussi un noyau pour l’utilisation conjointe avec l’interface notebook Jupyter.

Comme Cling est basé sur Clang, l’implémentation de CUDA de ce dernier peut être utilisée pour Cling — et donc profiter de toutes les possibilités de CUDA de manière extrêmement dynamique, sans quitter le C++. Pour le moment, toutes les fonctionnalités de CUDA implémentées par Clang ne sont pas disponibles, notamment les attributs sur les variables.


Ce projet a été développé par un groupe d’étudiants à l’université technique de Dresde, mais le code source ne sera pas perdu (contrairement à la majorité des projets étudiants) : une bonne partie a déjà été incluse dans la version en cours de développement de Cling. L’implémentation est aussi prévue pour être assez flexible : elle ne fonctionne pour le moment qu’avec CUDA car Clang n’implémente rien d’autre, mais elle devrait fonctionner assez facilement avec d’autres technologies de calcul sur GPU (comme HIP ou C++AMP).

Source : présentation de Simeon Ehrig, Axel Naumann et Axel Hübl.