L’alliance de Fortran et de WebAssembly
- Fortran est un ancien langage de programmation apparu pour la première fois en 1957, plus ancien que le langage C, le CPU Intel 4004 et les ordinateurs mainframe IBM System/360.
- Fortran a été utilisé pour des tâches intensives en calcul dans les applications scientifiques et d’ingénierie, et certains le considèrent plus efficace que C pour les calculs numériques.
- Ce billet de blog explique comment compiler du code Fortran existant vers WebAssembly afin de l’exécuter dans un navigateur web.
Quel est le problème ?
- Il existe différentes façons de compiler Fortran vers WebAssembly, mais aucune ne prend parfaitement en charge toutes les fonctionnalités.
- Chaque méthode a ses inconvénients, et il ne s’agit pas d’une solution simple de type plug-and-play.
Résumé des compilateurs
- Il y a eu quelques évolutions autour des compilateurs Fortran basés sur LLVM.
- L’utilitaire f2c convertit Fortran 77 en code C, mais n’est pas compatible avec le code Fortran moderne.
- Le compilateur LFortran prend désormais en charge de nombreuses fonctionnalités, mais peut encore poser problème sur certains projets.
- Dragonegg est un plugin pour GCC qui génère de l’IR LLVM, mais il nécessite d’anciennes versions de GCC et de LLVM.
- Classic Flang ne prend pas en charge la sortie 32 bits, et LLVM Flang ne génère actuellement pas de sortie WebAssembly par défaut.
Construire et utiliser WebAssembly avec LLVM Flang
- Il faut modifier les sources de LLVM Flang pour implémenter la cible WebAssembly.
- On peut exploiter la conception modulaire de LLVM pour utiliser le frontend Flang et le backend WebAssembly.
Appeler une sous-routine Fortran depuis C
- L’article revient sur la manière de compiler et de lier une sous-routine Fortran comme partie d’un programme C.
Retour à LLVM Flang
- Il est possible de compiler des sous-routines Fortran avec le compilateur LLVM Flang, mais comme la cible WebAssembly n’est pas encore implémentée, il faut appliquer un patch au code source.
Appeler des routines Fortran depuis JavaScript
- On peut utiliser Emscripten pour lier des objets Fortran et les appeler directement depuis JavaScript.
Bibliothèque d’exécution Fortran : le chemin vers "Hello, World!"
- L’article décrit les problèmes qui surviennent lorsqu’on essaie de construire un programme "Hello, World!" en Fortran.
- Il faut compiler la bibliothèque d’exécution Fortran de LLVM pour WebAssembly.
L’avis de GN⁺
- Cet article montre une tentative d’intégrer un langage traditionnel comme Fortran aux technologies web modernes. Une telle approche peut être utile pour apporter sur le web des bibliothèques de calcul numérique existantes et éprouvées.
- Le processus de compilation de Fortran vers WebAssembly illustre bien les défis liés au portage d’une base de code existante vers une nouvelle plateforme. Les problèmes liés à la cross-compilation sont notamment des éléments importants à prendre en compte pour tout portage vers un autre langage ou une autre plateforme.
- Même si cette technologie est intéressante, exécuter sur le web des calculs numériques exigeant de hautes performances présente encore des limites pratiques. WebAssembly ne fournit pas encore forcément le même niveau de performance que les applications natives traditionnelles.
- Le développement de LLVM Flang est très actif, et ces efforts devraient avoir un impact positif sur la communauté Fortran. Cependant, les différents problèmes mentionnés dans l’article montrent aussi qu’il reste des défis à résoudre.
- Cet article fournit des informations utiles aux développeurs qui cherchent à intégrer Fortran aux technologies web, en particulier à ceux qui envisagent de développer des outils web dans les domaines de l’analyse numérique ou du calcul scientifique.
1 commentaires
Commentaires Hacker News
George a étudié Fortran en participant au projet WebR pour exécuter R dans le navigateur
f2c, qui convertit Fortran en C, mais grâce à des patches pour LLVM Flang, il est désormais possible de le construire avec un vrai compilateur FortranRetour d’expérience sur un travail de compilation FORTRAN chez Xilinx il y a 20 ans
f2c.hcontenait une définition nomméebarfRecommandation de construire
f18à partir des sources les plus récentes du projet LLVMÉloges pour la manière d’expliquer via l’approche du « plus simple exemple non trivial »
Mention d’un manque de connaissances sur le développement WebAssembly
Question sur l’existence d’un écosystème prêt pour la « production » pour l’algèbre linéaire en JavaScript
Avis disant que s’il avait conservé du code Fortran 78 écrit en 1981/82, il aimerait voir s’il serait possible de l’exécuter aujourd’hui
Remarque disant qu’il est étrange qu’il n’y ait pas davantage de mentions de LFortran
Informations sur l’usage de Fortran dans .NET et Java
Partage d’expérience sur la compilation de TensorFlow pour le navigateur