PyConFr 2014

Lyon, October 25-28

PyConFR 2014

samedi 11:40:00–12:00:00

[E/R] IRPF90 : a Fortran code generator for HPC

Anthony Scemama

Audience level:
Intermediate

Description

IRPF90 is a Fortran code generator written in Python. It aims at simplifying the collaborative development of large Fortran programs.

Abstract

Résumé

IRPF90 est un générateur de code Fortran écrit en Python qui aide le développement d'applications de grande taille. En Fortran, le programmeur doit se concentrer sur l'ordre dans lequel les instructions sont exécutées : avant d'utiliser une variable, le programmeur doit être sûr que cette variable a déjà été construite pour tous les chemins d'exécution possibles. Pour les gros codes, c'est une énorme source d'erreur qui croît avec la taille du code.

Avec IRPF90, l'ordre dans lequel s'exécute les instructions n'est qu'en partie contrôlé par l'utilisateur, et un mécanisme automatique garantit que chanque entité est construite avant d'être utilisée. Ce mécanisme repose sur les relations {a besoin de / est utilisé par} entre les entités, qui sont construites automatiquement. Par conséquent, le programmeur n'a plus besoin de connaître l'arbre de production de chaque entité.

De nombreuses "features" ont été ajoutées au langage, notamment pour la métaprogrammation. Par exemple, des templates ou des scripts Python peuvent être insérés dans le code source. Ces scripts sont exécutés à la compilation et le résultat de la sortie standard est inséré dans le code généré.

Les codes écrits avec IRPF90 s'exécutent généralement plus vite que les programmes Fortran standard, sont plus rapides à écrire et sont beaucoup plus faciles à maintenir.

References

Abstract (english)

IRPF90 is a Fortran code generator written in Python which helps the development of large Fortran codes. In Fortran programs, the programmer has to focus on the order of the instructions: before using a variable, the programmer has to be sure that it has already been computed in all possible situations. For large codes, it is common source of error.

Using IRPF90 most of the order of instructions is handled by the pre-processor, and an automatic mechanism guarantees that every entity is built before being used. This mechanism, relies on the {needs/needed by} relations between the entities, which are built automatically. The consequence is that the programmer doesn't need to know the production tree of each entity.

Many features were added for metaprogramming. For instance, templates or Python scripts can be embedded in the source code and executed at compile time.

Codes written with IRPF90 execute usually faster than Fortran programs, are faster to write and easier to maintain than standard Fortran programs.

Voir le support de présentation

Sponsors