Swift (langage de script parallèle)
Swift[1] est un langage de script implicitement parallèle, qui permet d'écrire des scripts qui distribuent l'exécution de programmes sur des ressources de traitements parallèles[2] tels que des grappes de serveurs, des nuages, des grilles informatiques, et des supercalculateurs. L'implémentation est en open source sous licence Apache version 2.0.
Swift | |
Date de première version | 2007 |
---|---|
Paradigme | Programmation concurrente, Parallélisation, calcul distribué, Fonctionnel, Impératif |
Développeur | Université de Chicago et laboratoire National d'Argonne |
Dernière version | 0.96.2 (5 aôut 2015) |
Typage | Fort |
Influencé par | C (langage), Programmation fonctionnelle, Grille informatique |
Licence | Licence Apache version 2.0 |
Site web | http://swift-lang.org |
Fondements
Un script Swift[3] décrit des données avec un typage fort, des composants applicatifs, des invocations de ces composants, et l'interdépendance entre elles sur la base des flux de données. L'exécution est implicitement parallèle, c'est-à -dire, toutes les instructions du script seront automatiquement exécutées en parallèle, dans la limite des processeurs disponibles, et sauf dépendance entre leurs données. Le langage est déterministe : les résultats des traitements sont indépendants de l'ordre dans lequel les tâches parallèles s'exécutent. Un mécanisme de mise en correspondance (« mapping » en anglais)[4] permet de traiter et transmettre des données par l'intermédiaire de répertoires et de fichiers.
La répartition de tâches parallèles entre un grand nombre de ressources est implémentée par un mécanisme de « cabotage » (« coaster task dispatch » en anglais)[5] gérant le lancement de tâches et si nécessaire le transfert de fichier. Une implémentation basée sur une interface à base de messages[6] permet une exécution à très haut débit (par exemple plus de 3 000 tâches par seconde)[7] sur des grappes de grande capacité et des supercalculcateurs.
Applications
Exemples d'applications[8] :
- Modélisation du climat ;
- Modélisation économique ;
- Modélisation de protéines en biochimie ;
- Analyse d'IRM en neuroscience.
Notes et références
- (en) « Swift Home Page », swift-lang.org (consulté le ).
- Michael Wilde, Mihael Hategan, Justin M. Wozniak, Ben Clifford, Daniel S. Katz et Ian Foster, « Swift: A language for distributed parallel scripting », Parallel Computing, vol. 37, no 9,‎ , p. 633-652 (lire en ligne [PDF]).
- Manuel de référence, chapitre 2.
- Manuel de référence, chapitre 3.
- Mihael Hategan, Justin Wozniak et Ketan Maheshwari, « Coasters: uniform resource provisioning and access for scientific computing on clouds and grids », Proceedings Utility and Cloud Computing,‎ (lire en ligne [PDF]).
- Wozniak, Justin M., Timothy G. Armstrong, Michael Wilde, Daniel S. Katz, Ewing Lusk, and Ian T. Foster. "Swift/T: Large-scale Application Composition via Distributed-memory Dataflow Processing." In Cluster, Cloud and Grid Computing (CCGrid), 2013 13th IEEE/ACM International Symposium on, pp. 95-102. IEEE, 2013.
- Michael Wilde, Ian Foster, Kamil Iskra, Pete Beckman, Zhao Zhang, Allan Espinosa, Mihael Hategan, Ben Clifford et Ioan Raicu, « Parallel Scripting for Applications at the Petascale and Beyond », Computer, vol. 42, no 11,‎ (lire en ligne [PDF]).
- (en) Études de cas sur le site officiel.