![]()
Précédent : Résultats nouveaux Remonter :
Résultats nouveaux Suivant :
Commande des Systèmes
Tony Scott a été invité pour un an dans le projet afin de collaborer à l'établissement et au développement du lien entre le système de calcul formel Maple et Scilab. Cette invitation a été en partie financée par Waterloo Maple Inc. ( WMI).
Un travail de grande envergure pour relier Scilab et le système de calcul formel MuPAD est en train de se mettre en place avec la société Sciface qui distribue MuPAD. C'est dans ce cadre que Tony Scott travaille maintenant depuis début Septembre 1998 à l'Inria-Nancy.
Les travaux suivants ont été réalisés :
Le programme Transfor de Claude Gomez, qui permet de traduire des procédures Maple en sous-programme Fortran, avec génération de code Blas pour la traduction des expressions matricielles a été releasé et mis à jour [[58]]. Il est disponible sur le site :
http://www-rocq.inria.fr/scilab/gomez/transfor.
Sur le même site, on peut trouver aussi la dernière version de Macrofort, le package qui permet de générer à partir de Maple des programmes Fortran complets.
Un article sur Macrofort et Transfor va être publié dans un numéro spécial du journal Computer Physics Communications [[29]].
Le programme Maple ``maple2scilab'' qui permet de transférer des objets Maple vers Scilab a été complètement réécrit. Il permet maintenant de transférer automatiquement dans Scilab des expressions ou des matrices et ceci en générant au choix du code C, Fortran ou Scilab. Ce programme est fourni avec la dernière release 2.4 de Scilab.
Un algorithme pour l'estimation de l'erreur sur l'évaluation des intégrales a été développé. L'estimation d'erreur est une méthode itérative qui s'applique à toute intégrale qui peut être calculée selon la méthode de quadrature Gauss-Legendre. La description technique de l'algorithme se trouve dans le rapport technique fourni à WMI.
Une recherche sur la génération de code Fortran optimisé pour les machines parallèles a été poursuivie dans le cadre de l'évaluation rapide des intégrales moléculaires avec la collaboration de Patrice Quinton et Sanjay Rajopadhye à l'Inria-Rennes. En particulier, nous avons trouvé une application de leur programme Alpha dans le domaine de la chimie quantique (une somme de structures polyhédrales, ce qui représente un problème difficile). Nous avons trouvé qu'une simple version du problème en une dimension pouvait être parallélisé. Une collaboration sur le problème plus difficile de la dimension trois est en cours.
Nous avons examiné la question de la combinaison du calcul formel et de Scilab et aussi les possibilités offertes par les logiciels gratuits et l'exploitation du WWW (world-wide-web). Entre autres, nous avons travaillé sur la réalisation d'un interface utilisateur commun aux deux systèmes qui fournirait un environnement utile pour rédiger des documents.
En effectuant quelques modifications mineures (marques de commentaire, ...) sur les fichiers de définition des fonctions Matlab, il est possible de les transmettre à l'interprête syntaxique de Scilab.
Le code interpreté est recupéré sous forme d'une liste Scilab contenant une représentation hiérachique des structures de contrôle et les représentations en notation polonaise inverse des expressions. Le traducteur, entièrement écrit en langage Scilab, se charge alors d'effectuer une réecriture du code Matlab en langage Scilab. A chaque opérateur Matlab ainsi qu'à chaque fonction Matlab est associée une fonction de réecriture chargée de produire le code Scilab correspondant à la réalisation de l'opération ou à l'appel de la fonction.
La sémantique des opérateurs et des fonctions Matlab dépend parfois du type ou des dimensions des arguments. Par exemple l'expression max(A) calcule le maximum des éléments de A si A est un vecteur ou les maxima des éléments de chacune des colonnes de A si c'est une matrice. En l'absence de typage explicite le traducteur tente donc d'inférer les types et les dimensions pour générer le code Scilab adapté : par exemple max(A) ou max(A,'row') selon que A est un vecteur ou une matrice. En cas d'information insuffisante le traducteur génère l'appel à une fonction d'émulation (par exemple mtlb_max(A)), auquel cas le code généré sera moins efficace.
Pour chaque fonction Matlab, le traducteur génère la fonction Scilab correspondante, le fichier de help associé, et la fonction de réecriture associée. Il est ainsi possible de traduire automatiquement une bibliothèque de fonctions Matlab.
Une première version en
-test a été
incluse dans la version 2.4 de Scilab. Cette version, intègre la
traduction de la syntaxe Matlab4, de la plupart des primitives et
de quelques fonctions de base. Grâce aux premiers retours des
utilisateurs une nouvelle version plus riche et plus sûre sera
incluse dans la version 2.4.1.
Cette boîte à outils provient d'une contribution des projets ReMaP et Reseda, elle représente un premier pas vers le développement d'une version de Scilab permettant d'effectuer du calcul parallèle.
Une interface avec le logiciel TK/TCL a été intégrée dans Scilab avec une philosophie et une syntaxe proche de l'interface graphique disponible dans Matlab.
Cette boîte à outils pour l'analyse fractale des signaux 1D et 2D a été développée et interfacée par le projet Fractales. Elle inclut un large éventail de techniques d'analyse multifractale, d'analyse de la régularité ponctuelle de fonctions, et de l'analyse temps fréquence.
La bibliothèque de fonctions de calcul des distributions
cumulées (Beta, Binomiale,
,
F, Gamma , Binomiale négative, Normale, de Poisson, de
Student) de statistiques cumulées `` DCDFLIB''
ainsi que la bibliothèque ``Grand'' de sous programmes
Fortran pour le calcul de nombres aléatoires développées à
l'université du Texas ont été interfacées avec Scilab.
Le codage des nombres en machines dépend du type des machines. La plupart utilisent les codages IEEE ``littleendian'' (byte de poids faible d'abord) ou ``big_endian'' (byte de poids fort d'abord). De ce fait les fichiers binaires générés ne sont pas compatibles d'un type de machine à l'autre. Des fonctions de lecture et écriture de fichiers binaires intégrant un changement automatique de codage ont été intégrés. Il devient ainsi possible d'echanger des fichiers binaires entre machines de type différents.
Ces primitives ont été notamment utilisées pour écrire les fonctions de lecture/écriture des fichiers binaires au format Matlab.
Participants : Hector Rubio Scola, François
Delebecque.
Des interfaces ont été réalisées pour la résolution de grands programmes linéaires creux. En particulier, le code HOPDM de J. Gondzio a été interfacé et adapté de manière à pouvoir définir le problème de manière interactive en utilisant les matrices creuses de Scilab. Des comparaisons ont été faites avec le logiciel Lipsol qui résout le problème par une implémentation en code Scilab, en utilisant les primitives de Cholesky creux.
La version 2.3 de Scilab comprenait un portage sous
windows, basée sur l'environnement de développement GnuWin32
et distribuée en
-test. En 98, le
manque de maturité de l'environnement GnuWin32 nous a conduit
à utiliser VisualC++. Par ailleurs un effort important a été
dédié à la finalisation de l'interface graphique et du link
incrémental. L'ensemble a été validé par une campagne de
tests approfondis.
Le compilateur a été complété pour pouvoir prendre en compte entièrement le formalisme hybride fondateur. En particulier on a travaillé sur la gestion des routages des signaux d'activation qui ne se réduisent pas à des événements (points isolés dans le temps).
De plus la compilation a été accélérée en réecrivant les goulots d'étranglements en Fortran.
Enfin, nous avons robustifié et amélioré l'interface graphique de l'éditeur bloc diagramme (version windows, gestion des menus, navigateur, éditeur d'icones, ...)
Scicos a été utilisé avec succès sur des applications industrielles dans le cadre de contrats avec Renault (voir figure 8) et Edf (voir figure 4)
Nous avons modifié l'interprête Scilab dans le but de généraliser le mécanisme de surcharge des opérateurs et des fonctions. L'objectif est de pouvoir définir leurs actions pour de nouveaux types de données. La surcharge pouvant s'effectuer soit ``en dur'' par l'écriture de nouvelles primitives, soit plus simplement par la définition de nouvelles fonctions en langage Scilab.
La version 2.4 de Scilab intègre des matrices multidimensionnelles et nous travaillons actuellement à l'ajout des types de matrices entières sur 1, 2 ou 4 bytes. Ce type de donnée est particulièrement intéressant pour le traitement des images et du son en limitant la mémoire nécéssaire. Cette extension sera diffusée comme contribution à la fin de l'année.