Résultats de calcul plus rapides sans crainte d'erreurs |  Nouvelles du MIT

Résultats de calcul plus rapides sans crainte d’erreurs | Nouvelles du MIT

Les chercheurs ont mis au point une technique qui peut accélérer considérablement certains types de programmes informatiques automatiquement, tout en garantissant que les résultats du programme restent précis.

Leur système augmente la vitesse des programmes qui s’exécutent dans le shell Unix, un environnement de programmation omniprésent créé il y a 50 ans et qui est encore largement utilisé aujourd’hui. Leur méthode parallélise ces programmes, ce qui signifie qu’elle divise les composants du programme en morceaux qui peuvent être exécutés simultanément sur plusieurs processeurs informatiques.

Cela permet aux programmes d’exécuter des tâches telles que l’indexation Web, le traitement du langage naturel ou l’analyse de données en une fraction de leur durée d’exécution d’origine.

« Il y a tellement de gens qui utilisent ces types de programmes, comme des data scientists, des biologistes, des ingénieurs et des économistes. Désormais, ils peuvent automatiquement accélérer leurs programmes sans craindre d’obtenir des résultats incorrects », explique Nikos Vasilakis, chercheur au Laboratoire d’informatique et d’intelligence artificielle (CSAIL) du MIT.

Le système facilite également la tâche des programmeurs qui développent des outils utilisés par les scientifiques des données, les biologistes, les ingénieurs et autres. Ils n’ont pas besoin de faire des ajustements spéciaux à leurs commandes de programme pour permettre cette parallélisation automatique et sans erreur, ajoute Vasilakis, qui préside un comité de chercheurs du monde entier qui travaillent sur ce système depuis près de deux ans.

Vasilakis est l’auteur principal du dernier article de recherche du groupe, qui comprend le co-auteur du MIT et étudiant diplômé du CSAIL, Tammam Mustafa, et sera présenté au Symposium USENIX sur la conception et la mise en œuvre des systèmes d’exploitation. Les co-auteurs incluent l’auteur principal Konstantinos Kallas, un étudiant diplômé à l’Université de Pennsylvanie ; Jan Bielak, élève au lycée Staszic de Varsovie ; Dimitris Karnikis, ingénieur logiciel chez Aarno Labs ; Thurston HY Dang, un ancien post-doctorant du MIT qui est maintenant ingénieur logiciel chez Google ; et Michael Greenberg, professeur adjoint d’informatique au Stevens Institute of Technology.

Un problème vieux de plusieurs décennies

Ce nouveau système, connu sous le nom de PaSh, se concentre sur les programmes ou les scripts qui s’exécutent dans le shell Unix. Un script est une séquence de commandes qui demande à un ordinateur d’effectuer un calcul. La parallélisation correcte et automatique des scripts shell est un problème épineux auquel les chercheurs sont confrontés depuis des décennies.

Le shell Unix reste populaire, en partie parce que c’est le seul environnement de programmation qui permet à un script d’être composé de fonctions écrites dans plusieurs langages de programmation. Différents langages de programmation sont mieux adaptés à des tâches ou à des types de données spécifiques ; si un développeur utilise le bon langage, résoudre un problème peut être beaucoup plus facile.

“Les gens aiment aussi développer dans différents langages de programmation, donc composer tous ces composants dans un seul programme est quelque chose qui arrive très fréquemment”, ajoute Vasilakis.

Alors que le shell Unix permet des scripts multilingues, sa structure flexible et dynamique rend ces scripts difficiles à paralléliser à l’aide de méthodes traditionnelles.

La parallélisation d’un programme est généralement délicate car certaines parties du programme dépendent d’autres. Ceci détermine l’ordre dans lequel les composants doivent s’exécuter ; se tromper de commande et le programme échoue.

Lorsqu’un programme est écrit dans un seul langage, les développeurs disposent d’informations explicites sur ses fonctionnalités et le langage qui les aident à déterminer quels composants peuvent être parallélisés. Mais ces outils n’existent pas pour les scripts dans le shell Unix. Les utilisateurs ne peuvent pas facilement voir ce qui se passe à l’intérieur des composants ou extraire des informations qui faciliteraient la parallélisation.

Une solution juste à temps

Pour surmonter ce problème, PaSh utilise une étape de prétraitement qui insère des annotations simples sur les composants du programme qui, selon lui, pourraient être parallélisables. Ensuite, PaSh tente de paralléliser ces parties du script pendant que le programme est en cours d’exécution, au moment exact où il atteint chaque composant.

Cela évite un autre problème dans la programmation shell – il est impossible de prédire le comportement d’un programme à l’avance.

En parallélisant les composants du programme « juste à temps », le système évite ce problème. Il est capable d’accélérer efficacement beaucoup plus de composants que les méthodes traditionnelles qui tentent d’effectuer la parallélisation à l’avance.

La parallélisation juste-à-temps garantit également que le programme accéléré renvoie toujours des résultats précis. Si PaSh arrive à un composant de programme qui ne peut pas être parallélisé (il dépend peut-être d’un composant qui n’a pas encore été exécuté), il exécute simplement la version originale et évite de provoquer une erreur.

“Peu importe les avantages en termes de performances – si vous promettez de faire fonctionner quelque chose en une seconde au lieu d’un an – s’il y a une chance de renvoyer des résultats incorrects, personne n’utilisera votre méthode”, déclare Vasilakis.

Les utilisateurs n’ont pas besoin d’apporter de modifications pour utiliser PaSh ; ils peuvent simplement ajouter l’outil à leur shell Unix existant et dire à leurs scripts de l’utiliser.

Accélération et précision

Les chercheurs ont testé PaSh sur des centaines de scripts, des programmes classiques aux programmes modernes, et il n’en a pas cassé un seul. Le système était capable d’exécuter des programmes six fois plus rapidement, en moyenne, par rapport à des scripts sans précédent, et il a atteint une accélération maximale de près de 34 fois.

Cela a également augmenté la vitesse des scripts que d’autres approches n’étaient pas en mesure de paralléliser.

« Notre système est le premier qui montre ce type de transformation tout à fait correcte, mais il y a aussi un avantage indirect. La façon dont notre système est conçu permet à d’autres chercheurs et utilisateurs de l’industrie de s’appuyer sur ce travail », déclare Vasilakis.

Il est ravi d’obtenir des commentaires supplémentaires des utilisateurs et de voir comment ils améliorent le système. Le projet open source a rejoint la Linux Foundation l’année dernière, le rendant largement disponible pour les utilisateurs de l’industrie et du milieu universitaire.

À l’avenir, Vasilakis souhaite utiliser PaSh pour résoudre le problème de la distribution – en divisant un programme pour qu’il s’exécute sur plusieurs ordinateurs, plutôt que sur plusieurs processeurs au sein d’un seul ordinateur. Il cherche également à améliorer le schéma d’annotation afin qu’il soit plus convivial et puisse mieux décrire les composants complexes du programme.

« Les scripts shell Unix jouent un rôle clé dans les tâches d’analyse de données et d’ingénierie logicielle. Ces scripts pourraient s’exécuter plus rapidement en faisant en sorte que les divers programmes qu’ils invoquent utilisent les multiples unités de traitement disponibles dans les processeurs modernes. Cependant, la nature dynamique de la coque rend difficile
concevoir des plans d’exécution parallèles à l’avance », explique Diomidis Spinellis, professeur de génie logiciel à l’Université d’économie et de commerce d’Athènes et professeur d’analyse de logiciels à l’Université technique de Delft, qui n’a pas participé à cette recherche. “Grâce à l’analyse juste-à-temps, PaSh-JIT réussit à conquérir la complexité dynamique du shell et réduit ainsi les temps d’exécution des scripts tout en maintenant l’exactitude des résultats correspondants.”

“En tant que remplacement direct d’un shell ordinaire qui orchestre les étapes, mais ne les réorganise ni ne les divise, PaSh fournit un moyen simple d’améliorer les performances des gros travaux de traitement de données”, ajoute Douglas McIlroy, professeur adjoint au Département d’informatique du Dartmouth College, qui dirigeait auparavant le département de recherche sur les techniques informatiques des laboratoires Bell (qui a été le berceau du système d’exploitation Unix). « L’optimisation manuelle pour exploiter le parallélisme doit être effectuée à un niveau pour lequel les langages de programmation ordinaires (y compris les shells) n’offrent pas d’abstractions propres. Le code résultant mêle des questions de logique et d’efficacité. Il est difficile à lire et difficile à maintenir face à l’évolution des exigences. PaSh intervient intelligemment à ce niveau, préservant la logique d’origine en surface tout en atteignant l’efficacité lorsque le programme est exécuté.

Ce travail a été soutenu, en partie, par la Defense Advanced Research Projects Agency et la National Science Foundation.

#Résultats #calcul #rapides #sans #crainte #derreurs #Nouvelles #MIT

Leave a Comment

Your email address will not be published.