Catégorie : Logiciels

Rely : un nouveau langage moins énergivore

Comment créer des programmes qui acceptent des erreurs de calcul et un certain niveau d’imprécision ? C’est à ce défi que s’attelle une équipe de chercheurs du MIT dans le cadre du projet Chisel. Menés par Sasa Misailovic, ces travaux sont le prolongement de constats effectués par Martin Rinard au sein du Computer Science and Artificial Intelligence Laboratory du MIT et de Avinash Lingamneni au sein de l’université de Rice.

Martin Rinard a créé les bases du langage Rely qui permet aux développeurs de préciser quelle instruction supporte un calcul imprécis. Avinash Lingamneni crée volontairement des processeurs imprécis, mais très rapides et peu énergivores.

Bientôt, l’interpréteur fera le travail à la place du développeur
L’équipe de Sasa Misailovic a simplifié et élargi la couverture du langage Rely. Le fonctionnement est désormais trivial. Le concepteur du logiciel ou de l’algorithme fixe un niveau maximum d’imprécision. Pour préciser quelle instruction en particulier supporte cette imprécision, il ajoute juste un point « . » devant l’instruction. Par exemple total = total + nouvelle_valeur devient total = total + .nouvelle_valeur.

Le compilateur qui transforme le code en instructions binaires peut alors rediriger l’exécution de la portion de code qui supporte un calcul imprécis sur une partie spécifique du processeur. Sans attendre la généralisation des processeurs imprécis, la qualité du calcul peut être dégradée en passant par exemple sur le calcul de nombres entiers plutôt que de nombre avec virgule.

Bientôt, l’interpréteur fera le travail à la place du développeur
Pour l’instant, l’interpréteur Rely ne fait qu’estimer si le niveau d’imprécision du code est trop ou pas assez élevé pour fournir le résultat escompté. Cela permet aux développeurs d’ajuster ce niveau en quelques secondes, simplement en enlevant quelques points « . » dans le code.

A terme, l’interpréteur Rely devrait être capable de proposer lui-même aux développeurs le niveau d’imprécision / taux d’erreurs possible et d’identifier sur quelles lignes de code l’appliquer.

Comme nous vous l’expliquions précédemment dans cet article, le potentiel de cette approche d’écoconception logicielle est énorme puisqu’elle permet de diviser jusqu’à un facteur 15 le temps d’exécution tout en réduisant par 15 la consommation électrique. De quoi tripler ou plus l’autonomie des smartphones, ordinateurs portables et autres tablettes !

Sources : GreenIT.fr, http://newsoffice.mit.edu/2014/programming-error-for-energy-savings-1030, et http://newsoffice.mit.edu/2013/how-program-unreliable-chips

Frédéric Bordage

Expert en green IT, sobriété numérique, numérique responsable, écoconception et slow.tech, j'ai créé le collectif Green IT en 2004. Je conseille des organisations privées et publiques, et anime GreenIT.fr, le Collectif Conception Numérique Responsable (@CNumR) et le Club Green IT.

Site web - Twitter - Facebook - Linked In