Les chercheurs ont mis au point un nouveau système capable d’accélérer l’exécution des programmes informatiques tout en garantissant leur précision. —


  • FrançaisFrançais


  • Suivez-nous sur notre page Facebook et notre canal Telegram


    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 les scientifiques des données, les biologistes, les ingénieurs et les économistes. Désormais, ils peuvent automatiquement accélérer leurs programmes sans craindre d’obtenir des résultats incorrects”, explique Nikos Vasilakis, chercheur au sein de l’équipe informatique. Laboratoire de science et d’intelligence artificielle (CSAIL) au 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é de 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 à montrer ce type de transformation totalement 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.

    Pour aller de l’avant, Vasilakis veut utiliser PaSh pour résoudre le problème de la distribution – diviser 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.

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

    Houssen Moshinaly

    Rédacteur en chef d'Actualité Houssenia Writing. Rédacteur web depuis 2009.

    Blogueur et essayiste, j'ai écrit 9 livres sur différents sujets comme la corruption en science, les singularités technologiques ou encore des fictions. Je propose aujourd'hui des analyses politiques et géopolitiques sur le nouveau monde qui arrive. J'ai une formation de rédaction web et une longue carrière de prolétaire.

    Pour me contacter personnellement :

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *