Projet : META2

previous up next contents
Précédent : Résultats nouveaux Remonter : Résultats nouveaux Suivant : Commande des Systèmes


Sous-sections


   
CAO en Automatique

Liens Scilab - Calcul formel

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 :

Génération de code
: C. Gomez, T. Scott

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]].

Maple/Scilab
: C. Gomez

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.

Vectorisation du calcul d'intégrales
: T. Scott

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.

Interface commune formel/numérique
: C. Klimann, T. Scott

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.

Traducteur Matlab



Participant : Serge Steer.

Motivations

De nombreux utilisateurs souhaitent pouvoir migrer de Matlab vers Scilab sans avoir à recoder leurs applications. Par ailleurs il existe de nombreuses boîtes à outils écrites en Matlab et diffusées librement. C'est pour cela qu'on développe un traducteur de Matlab vers Scilab.

Principe

La syntaxe et la philosophie de Matlab et de Scilab sont très voisines, ce qui rend le développement d'un traducteur relativement aisé.

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.

Etat actuel

Une première version en $ \beta$-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.

Nouvelles boîtes à outils

PVM
: E. FLeury

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.

Interface TK/TCL
: B. Guiheneuf

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.

Boîte à outils analyse fractale
: B. Guiheneuf, P. Goncalvès

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.

Fonctions de distributions
: J.P. Chancelier

La bibliothèque de fonctions de calcul des distributions cumulées (Beta, Binomiale, $ \chi^{2}_{}$, 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.

Lecture écriture de fichiers binaires portables
: J.P. Chancelier

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.

Cholesky creux, hopdm, lipsol



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.

Amélioration des fonctionalités existantes

Version windows
: J.P. Chancelier

La version 2.3 de Scilab comprenait un portage sous windows, basée sur l'environnement de développement GnuWin32 et distribuée en $ \beta$-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.

Scicos
: R. Nikoukhah, S. Steer

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)


  
Figure 4: Schéma simplifié de régulation de bief dans Scicos
\begin{figure} \begin{center}\begin{picture} (0,0)% \epsfig{file=er.pstex} % \... ...begin{picture} (6021,8745)(106,-7994) \end{picture}\par \end{center}\end{figure}

Surcharge des fonctions
: S. Steer

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.

Nouveaux types de données
: S. Steer

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.



previous up next contents
Précédent : Résultats nouveaux Remonter : Résultats nouveaux Suivant : Commande des Systèmes