|
Décembre 2013 -
Pour cela, l'outil VMKit de l'UMPC sera industrialisé et adapté. Appliqués à Scilab, ces résultats amélioreront fortement la plateforme à la fois en terme de performance et de consommation mémoire.
La plupart des langages de script pour les calculs scientifiques, comme celui de Scilab, reposent sur une interprétation dans une boucle d'évaluation. Ainsi, un certain nombre d'opérations basiques, telles que les boucles, sont lentes par rapport à des codes compilés. Cela est dû à une répétition d'un nombre important de vérifications, de détection de types, etc., et à l'absence d'optimisation globale du code d'une fonction. Pour régler ces problèmes, depuis une dizaine d'années, les machines virtuelles reposent sur des compilateurs dit à la volée ("Just In Time") pour optimiser le code. Ces technologies sont utilisées avec succès dans les machines virtuelles les plus optimisées, comme par exemple V8 pour le langage Javascript de Google. Cependant, ces développements complexes représentent des investissements importants : le développement de V8 a monopolisé une dizaine d'ingénieurs pendant trois ans.
VMKit, de l'UPMC, basé sur LLVM, est une boîte à outil pour le développement de machines virtuelles. En couplant VMKit à Scilab, le projet vise une amélioration allant jusqu'à un facteur 40 par rapport aux performances actuelles, sans modifier le langage ni le code existant. Pour cela, l'outil VMKit sera industrialisé et adapté aux langages de calcul scientifiques en général et au logiciel Scilab en particulier.
De nombreux industriels migrent aujourd'hui vers le logiciel Scilab. De plus, son caractère libre et "Open Source" le rend accessible aux PME. Cependant, les limitations en terme de performances du langage de script freinent parfois ces transitions. Grâce aux résultats de ce projet, elles en seront grandement facilitées.
Ainsi, l’utilisation de VMKit/LLVM comme brique technologique du projet s’est avérée tout à fait adapté aux spécificités techniques de Scilab. Grâce à la fiabilité et la flexibilité de VMKit/LLVM, un premier prototype d’une version accélérée de Scilab a pu être réalisé.
Il permet de déléguer les calculs répétitifs et coûteux au moteur LLVM qui dispose en son sein d’un moteur Just-in-Time (JIT).
Pour faciliter l’adoption et le déploiement de VMKit, une intégration dans Debian de VMKit a été réalisée. En une commande, les fonctionnalités nécessaires à Richelieu sont ainsi installables.
De plus, les partenaires ont travaillé directement avec les équipes de développement de LLVM pour le packaging et la qualification des futures versions de LLVM (versions 3.3, 3.4 et 3.5).
En parallèle, les premières versions du projet Scilint ont été mises à disposition. Ce logiciel va analyser du code source Scilab.
Scilint est développé en OCaml, langage parfaitement adapté pour ce genre de problématique.
Deux types d’analyses sont réalisées par le logiciel:
• les erreurs courantes de programmation dans le langage Scilab (déclarations redondantes, mauvaises déclarations, etc),
• les maladresses de programmation courantes.
Ce logiciel libre est disponible sur le site OcamlPro: http://scilint.ocamlpro.com/
La version de Scilab VMKit/LLVM se verra aussi amélioré pour gérer plus de cas où les améliorations de performances sont sensibles.
|