Un nouveau compilateur Fortran libre pour LLVM

La NNSA, la partie du Département de l’Énergie américain s’occupant de la sécurité nucléaire (NNSA), utilise énormément de calcul scientifique dans ses trois laboratoires nationaux (Lawrence Livermore, Los Alamos, Sandia) pour étudier le nucléaire dans ses applications militaires (y compris leur destruction). Leurs codes de calcul tendent souvent à mélanger plusieurs langages de programmation, généralement Fortran (populaire uniquement dans le milieu scientifique) et C ou C++ (plus généraliste), ils ont donc besoin d’un même compilateur pour tous ces langages. LLVM et Clang font leur nid dans le domaine du calcul scientifique (par exemple, avec des investissements de Google), mais ils ne peuvent rien faire pour du code Fortran.

Collaboration avec NVIDIA

Le projet lancé en collaboration avec NVIDIA est de développer un nouvel analyseur de code pour Fortran pour l’intégrer dans la galaxie LLVM. Ce choix a été posé par opposition à GCC, l’autre grande suite de compilateurs libre, notamment pour des raisons de licence : LLVM est distribué sous une licence de type BSD, bien plus permissive qu’une GPL. De plus, l’architecture globale de LLVM est très moderne et facilite la recherche dans le domaine des compilateurs, plus particulièrement de l’optimisation (un autre point souvent reproché à GCC). De plus, ce n’est pas la première fois que NVIDIA travaille avec LLVM.

Bien sûr, ce développement ne partira pas de zéro : le partenariat avec NVIDIA a été scellé à cause du rachat de PGI, une société spécialisée dans les compilateurs Fortran, C et C++ à destination spécifiquement du marché du calcul scientifique depuis plus de vingt-cinq ans (ce qui implique que ces compilateurs sont compatibles avec OpenMP et OpenACC). Ils sont notamment à l’œuvre dans le compilateur CUDA Fortran (raison du rachat par NVIDIA). Malgré ces origines, le communiqué de presse tient à rassurer : ce projet s’étendra sur plusieurs années (la première version utilisable devrait être disponible dans un an, vers la fin 2016) et suivra à la lettre les directives du projet LLVM pour le code et l’interface de programmation. Pas un mot, par contre, sur la collaboration avec Flang, un embryon de compilateur Fortran pour LLVM.

Plateformes

La performance pourrait poser question : le compilateur Fortran de PGI n’est pas connu pour proposer le code le plus rapide qui soit (voir, par exemple, les comparatifs de Polyhedron). L’espoir est que, couplé aux passes d’optimisation de LLVM, ce compilateur libre soit comparable aux meilleurs actuellement. Il pourrait aussi profiter de toutes les plateformes pour lesquelles LLVM peut générer du code binaire, principalement du x86, mais aussi MIPS ou les GPU.

Notamment, IBM parle déjà en bien de ce projet, par rapport à leur architecture POWER et le consortium OpenPOWER : ce compilateur pourra être utilisé sur leurs machines. D’ailleurs, IBM et NVIDIA sont à la manœuvre pour la réalisation du superordinateur Sierra, qui devrait être installé dans le laboratoire de Lawrence Livermore, avec une puissance de cent pétaflops (juste derrière l’autre projet américain, Summit, prévu pour le laboratoire de l’Oak Ridge avec une puissance de cent cinquante pétaflops). Une grosse partie de la puissance devrait provenir des GPU. Les États-Unis espèrent, avec ces deux projets, de se remettre au plus haut niveau en termes de puissance de calcul : le plus gros supercalculateur, actuellement, est Tianhe-2, en Chine, avec une puissance de cinquante-cinq pétaflops.

Source : NNSA, national labs team with Nvidia to develop open-source Fortran compiler technology.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s