version PDF - Flash informatique

Transcription

version PDF - Flash informatique
Sysquake 3
Yves Piguet, CEO, Calerga Sàrl, [email protected]
Sysquake,
le logiciel scientifique déjà
présenté dans ces colonnes en
octobre 1999 et en septembre 2001, est passé à la version
3 en octobre dernier. Les améliorations apportées se situent
principalement à trois niveaux:
❚ l’interactivité de Sysquake et l’interface utilisateur;
❚ le renforcement de la compatibilité avec Matlab, avec
notamment les tableaux de cellules et un meilleur support
des MAT-files;
❚ l’ouverture vers le monde extérieur, avec la connexion à
des bases de données, TCP/IP et les Web Services.
L’interactivité graphique est ce qui distingue le plus
clairement Sysquake de ses concurrents, notamment Matlab,
Octave et Scilab. Elle permet la manipulation directe des
graphiques et permet, par leur mise à jour pratiquement
instantanée, de comprendre intuitivement les phénomènes
qu’ils représentent et les lois qui les gouvernent.
Après une revue des nouveautés apparues dans les versions
3.0 et 3.1, cet article donne un aperçu de son architecture. La
conception modulaire facilite le portage sur de nouvelles platesformes, comme nous le verrons dans le cas du Pocket PC.
Mac OS 9 qu’Apple a écrite pour
assurer une transition plus facile
aux développeurs. Bien que la
distinction pour l’utilisateur ne
saute pas aux yeux (le Finder est
une application Carbon), dans le
cas de Sysquake, on en a profité
pour revoir complètement l’interface: nouvelle boîte de dialogue
pour les préférences, nouvelles
barres d’outils, éditeur, historique
des commandes dans un tiroir,
utilisation d’Unicode. Sysquake
apparaît aussi comme un «service» pour de nombreuses autres
applications Cocoa: on peut faire
évaluer par Sysquake une commande sélectionnée dans un
éditeur ou un traitement de texte. Enfin, Sysquake et ses extensions sont au format binaire natif Mach-O: les extensions
peuvent être compilées avec gcc et faire appel directement à
toutes les bibliothèques de Mac OS X.
Nouveautés
fig. 2 – Sysquake 3 sur Mac OS X, dont l’interface utilisateur
est basée sur la bibliothèque native Cocoa
fig. 1 – Sysquake 3 sur Windows XP: application multidocuments basée sur la bibliothèque C++ MFC
L’interface utilisateur est le changement le plus visible
apporté par Sysquake 3. Sur Windows (fig. 1), Sysquake
est maintenant une application multi-documents, avec des
fenêtres séparées pour l’interface par ligne de commande,
les graphiques interactifs et le nouvel éditeur qui permettent le développement dans la même application. Sur Mac
OS X (fig. 2), Sysquake est basé sur Cocoa, la bibliothèque
native héritée de NextStep, au lieu de Carbon. Carbon est
une bibliothèque largement compatible avec la toolbox de
Le langage de programmation de Sysquake supporte deux
nouveaux types de données: les nombres à virgule flottante
simple précision (single) réels et complexes, et les tableaux
de cellules, dont chaque élément peut contenir une donnée
de n’importe quel type. La fonction fminsearch permet
l’optimisation de fonctions dans R^n.
Threads
Sysquake permet maintenant l’exécution de plusieurs
tâches en parallèle. Depuis la version 1, il était possible
d’exécuter une fonction périodiquement; mais dans certaines
situations, les threads facilitent beaucoup la programmation.
Les calculs très longs peuvent être faits en tâche de fond avec
un affichage progressif des résultats. Les threads évitent aussi
fi 2 – 1er mars 2005 – page 9
Sysquake 3
le blocage de l’interface pendant la communication avec des
périphériques ou d’autres programmes. Le listing 1 montre
un serveur HTTP minimal.
de LME dans de nouvelles applications (à commencer par
Sysquake) et sur des systèmes d’exploitation très divers.
function server(port = 80)
fdListen = socketservernew(port);
while true
fdAccept = socketaccept(fdListen);
request = fscanf(fdAccept, ‘GET %s’);
if strcmp(request, ‘/quit’)
break;
end
fprintf(fdAccept, ‘Hello from Sysquake 3!\n’);
fprintf(fdAccept, ‘A random number: %f\n’, rand);
fclose(fdAccept);
end
fclose(fdListen);
public
function id = runHttpServer(port = 80)
id = threadnew(@server, threadset, port);
Listing 1: utilisationd’un thread dans un serveur HTTP minimal
Extensions
Les autres améliorations principales ont été faites par des
extensions, dont voici les principales:
❚ bases de données (MySQL et SQLite sur Windows et
Mac, ODBC sur Windows, fichiers DB sur Mac);
❚ sockets TCP et UDP;
❚ exécution de commandes shell sur Windows (existait déjà
sur Mac);
❚ entrées-sorties audio;
❚ Web Services (XML-RPC et SOAP, client et serveur).
Les protocoles XML-RPC et SOAP permettent à Sysquake de communiquer avec d’autres applications locales ou
distantes. Parmi les applications visées, on peut citer la communication avec des applications Java locales, par exemple
pour représenter la simulation d’un système en 3D dont les
lois de commandes seraient développées dans Sysquake, ou
la distribution de la charge de calcul sur un cluster.
Sysquake Application Builder
Pour finir, Sysquake Application Builder permet la
création d’applications indépendantes qui peuvent être
redistribuées sans royalties. Le code source de l’application
ne figure pas dans le code généré, ce qui donne une bonne
protection des algorithmes utilisés.
Architecture de Sysquake
Le cœur de Sysquake est LME (Lightweight Math
Engine), l’interpréteur d’un langage de programmation
compatible avec Matlab (fig. 3). Le développement de LME
a commencé en 1997 avec pour but de permettre l’implémentation de régulateurs temps-réel sur PowerMac; cela a imposé
une indépendance presque totale par rapport au système
d’exploitation, pour éviter par exemple des allocations de
mémoire ou des accès au disque qui étaient interdits dans les
tâches temps-réel. Avec du recul, cette approche s’est révélée
extrêmement judicieuse pour permettre une réutilisation
fi 2 – 1er mars 2005 – page 10
fig. 3 – architecture modulaire de Sysquake
LME lui-même est constitué de différents éléments:
❚ le noyau comprend le compilateur vers du code intermédiaire, l’interpréteur de ce code et les fonctions de base
pour la programmation et le support des types natifs;
❚ les fonctions spécifiques au système d’exploitation qui
permettent à LME de communiquer avec l’extérieur:
entrées/sorties, lecture du code source des fonctions
interprétées, accès à l’horloge;
❚ les fonctions d’extension qui peuvent être soit compilées
avec le noyau, soit placées dans des extensions de type
DLL, soit être carrément supprimées suivant l’application
(c’est le cas de nombreuses fonctions mathématiques ou
des fonctions d’algèbre linéaire basées sur LAPACK);
❚ les extensions basées sur des bibliothèques tierces (libpng
pour la lecture et l’écriture d’images PNG par exemple)
ou propres au système d’exploitation (entrées-sorties
audio);
❚ les extensions développées par l’utilisateur, compilées sous
forme de DLL et chargées au démarrage par LME.
LME est écrit en C “orienté objet”, c’est-à-dire en
reprenant certains principes qui font la force de la programmation-objet: modularité, structures opaques partout où
c’est possible pour faciliter l’évolution de l’implémentation
sans remise en cause de tout le code (“objets”), extension du
code par pointeurs de fonctions (“méthodes virtuelles”). Le
choix du C a permis notamment le portage de LME sur des
systèmes aux ressources très limitées, comme le Palm.
Graphiques interactifs
Les autres modules qui composent Sysquake sont les graphiques, la gestion de l’interactivité et l’interface utilisateur.
Les graphiques sont très largement indépendants du système
d’exploitation: des fonctions d’abstraction permettent de
séparer le code commun à toutes les plates-formes (calcul
de l’échelle, fonctions spécialisées pour les courbes de niveau
ou les simulations de systèmes dynamiques, commandes qui
étendent LME) de l’affichage proprement dit.
La gestion de l’interactivité est l’une des originalités
majeures de Sysquake par rapport à d’autres logiciels apparentés tels que Matlab. Une application pour Sysquake est
composée d’un fichier texte (SQ file) décrivant les variables
qui permettent la synchronisation de toutes les figures (elles
Sysquake 3
donnent l’état de l’application à un certain instant) et les
fonctions à appeler en réaction à différents événements, par
exemple une demande de réaffichage ou un clic de souris.
Ces fonctions sont implémentées dans le langage de LME. La
gestion des SQ files et de tout ce qui leur est associé (gestion
des événements, synchronisation des graphiques, gestion
des fonctions undo/redo, etc.) est également complètement
indépendante de la plate-forme, et écrite en C.
Enfin, l’interface utilisateur constitue l’essentiel de ce qui
est propre à chaque plate-forme. Les bibliothèques natives
de l’interface graphique de la plate-forme sont utilisées avec
le langage qui leur est associé: C++ et MFC sur Windows,
Objective C et Cocoa sur Mac OS X. La toolbox de Mac
OS 9 et Carbon sont abandonnés sans regret.
on a pu reprendre largement le code pour Windows avec des
adaptations mineures dues à la hiérarchie des fichiers différente. Avec l’amélioration de l’interface utilisateur (historique
des commandes, basculement de 90 degrés de l’affichage),
la gestion des DLL pour les extensions et les tests, le tout a
pris moins d’une semaine. Le résultat est disponible sur le
site de Calerga [1]. La suite, Sysquake complet, pourra se
baser largement sur la version Windows. Des modifications
relativement mineures seront nécessaires en raison des restrictions de la version Windows CE de MFC; par exemple,
seul Unicode est supporté pour les chaînes de caractères et
certaines fonctions graphiques manquent.
Portage vers une nouvelle plate-forme
Le tableau 1 montre la diversité des plates-formes sur
lesquelles LME a été porté. Un benchmark a été écrit pour
exécuter différents types de fonctions. Le résultat est normalisé pour que l’ordinateur de référence, le PowerBook
17” de l’automne 2003, donne des résultats correspondant
à sa fréquence, 1.33 GHz. Le résultat global est la moyenne
arithmétique de tous les tests. Les applications sont Sysquake
3.1 pour les ordinateurs Windows et Mac OS X, Sysquake
Embedded pour les cartes Linux XScale et Geode SC1200,
LyME pour les ordinateurs portables Palm OS, une version
interne de Sysquake 3.1 pour le Powerbook 3400 Mac OS
8.6, et le prototype actuel de LME pour Windows CE pour
le Dell Axim. Pour comparaison, le benchmark a aussi été
exécuté avec Matlab 7.0.1 sur le Powerbook de référence.
Quelques remarques s’imposent:
❚ le résultat global, moyenne arithmétique non pondérée
explicitement, a une part d’arbitraire, mais constitue un
moyen commode de comparaison;
❚ LME ne tire pas (encore) parti des deux microprocesseurs
du PowerMac G5;
❚ l’absence de FPU (unité à virgule flottante) sur le
Benchmark
La division de Sysquake en différents modules et la
séparation très claire entre les parties indépendantes et dépendantes du système d’exploitation facilitent beaucoup le
portage sur une nouvelle plate-forme. Le dernier, qui n’est
pas achevé au moment où ces lignes sont écrites, est le Pocket PC. Les ordinateurs Pocket PC ont un microprocesseur
dérivé de l’ARM, typiquement un Intel XScale; ils tournent
sous un système d’exploitation, Windows Mobile 2003 actuellement, assez largement compatible avec Windows XP.
Le développement se fait typiquement avec MS eMbedded
Visual C++, similaire à Visual C++ mais dont les bugs du
compilateur sont différents!
La première étape consiste à compiler le noyau de LME
avec une interface utilisateur minimale qui permet d’évaluer des expressions et d’en observer le résultat. Une fois
cette étape franchie, l’ajout des fonctions d’extension ne
demande pratiquement aucun travail. Les entrées-sorties, qui
permettent notamment la lecture des bibliothèques LME,
dépendent du système d’exploitation; pour Windows Mobile,
Moyenne
lu
max
fibo
uint
find
list
func
Dell Dimension 2400 P4 3.06 GHz
2749.3
2864
1330
2920
2984
3743
2510
2894
Apple PowerMac G5 Dual 2.5 GHz
2410.9
2915
2633
2438
2239
2116
1835
2700
Apple PowerBook G4 1.33 GHz
1330.0
1330
1330
1330
1330
1330
1330
1330
Apple PB G4 1.33 GHz (Matlab 7.0.1)
773.2
1017
1953
458
341
986
340
319
Apple iBook G3 500 MHz
497.4
531
619
286
604
481
455
507
DEC Workstation 500au Alpha 500 MHz
402.5
227
516
359
663
457
230
365
Sun Blade 100 UltraSparcIIe 500 MHz
367.5
194
400
488
414
400
326
350
Generic PC Pentium Win2K 300 MHz
350.9
444
257
380
518
288
276
294
Dell Axim X30 PXA270 626 MHz
143.4
55
140
31
381
111
59
226
Apple PowerBook 3400 PPC603 200 MHz
133.7
141
120
111
215
182
79
88
CerfBoard 255 XScale 400 MHz
84.4
11
25
42
234
92
63
125
Kontron X-board<861> SC1200 266 MHz
76.9
65
63
81
88
142
47
52
Palm Zire 71 OMAP 144 MHz, emu M68k
1.192
1.04
1.14
1.21
1.06
1.74
0.99
1.15
Handspring Visor MC68EZ328 16 MHz
0.508
0.189
0.449
0.546
0.522
0.750
0.480
0.616
Tableau 1– résultats du benchmark (lu: décomposition LU; max: recherche du maximum d’un vecteur de nombres; fibo: suite de Fibonacci calculée par multiplications matricielles; uint: arithmétique entière sur des octets; find: recherche de chaînes de caractères;
list: manipulation de listes; func: appels récursifs de fonctions).
fi 2 – 1er mars 2005 – page 11
Sysquake 3
❚
❚
❚
❚
XScale rend les calculs mathématiques (notamment la
décomposition LU, proche d’une inversion matricielle)
relativement lents;
le Dell Axim, qui tient dans une poche de chemise, est
comparable à un bon ordinateur de 1996;
les performances du Palm sont très mauvaises parce que
LyME est compilé pour un microprocesseur 68k qui est
émulé sur l’ARM1;
le rapport de vitesse de 1 à 1000 entre les modèles de
milieu de gamme de Palm et d’ordinateur de bureau, déjà
observé en 2001, demeure;
la comparaison avec Matlab 7.0.1 est assez parlante; elle
serait moins spectaculaire avec des calculs sur des matrices
de taille importante, où seules les performances de Lapack
comptent.
Conclusion
L’architecture modulaire de Sysquake le rend bien adapté
à des applications très diverses. En utilisant ou en omettant
certaines parties, on obtient différentes applications. À part
Sysquake, il existe Sysquake Remote, un module Apache pour
1
un mode de fonctionnement similaire à PHP, Sysquake Embedded pour la commande de systèmes embarqués, et LyME
comme substitut à une calculatrice scientifique avancée sur
Palm. Et comme le montre le portage sur Pocket PC, ce n’est
pas fini... L’intérêt de développer en parallèle toute une famille de produits qui partagent une grande partie de leur code
est de multiplier les tests; la qualité de chaque programme en
profite. La mise à jour en fonction de l’évolution du matériel
et des systèmes d’exploitation est aussi facilitée, comme le
montre le passage de Mac OS 9 à Mac OS X.
L’EPFL possède une licence de site de Sysquake 3.
L’auteur, qui est le développeur de Sysquake, reçoit très
volontiers les demandes de discussions ou de présentations.
Cet article a esquissé quelques directions de développement,
comme la supervision de processus, le calcul sur des clusters
ou le développement de nouvelles bibliothèques, pour lesquelles une collaboration serait possible.
Url
[1] site de Calerga: http://www.calerga.com ■
Mais cela ne doit pas faire oublier que LyME reste une excellente solution pour calculer une décomposition en valeurs singulières en
attendant le TSOL!
INDICO
Un logiciel de pointe pour
la gestion de conférence
[email protected], [email protected] & l’équipe Indico du CERN
Dans
le cadre du projet européen Integrated Digital Conferencing (InDiCo), l’équipe du
CERN Document Servers (CDS) a développé une nouvelle
application Web permettant d’organiser des conférences.
Cet outil permet aux utilisateurs de gérer tous les types de
conférences, de la plus simple, contenant une présentation
unique, à la plus complexe, avec sessions et contributions.
Cela comprend un mécanisme complet de délégation de droit
aux utilisateurs, un processus de paper reviewing, un archivage
des données concernant les conférences, la production des
actes électroniques, et bien plus encore.
À la fin de l’année 2003, les comités d’organisation
de la conférence Computing in High Energy Physics 2004
(CHEP04) décident d’utiliser Indico comme support informatique pour l’évènement. Dans cet article, nous allons
expliquer en détail le fonctionnement du logiciel Indico,
comment il a été conçu, et comment il a été validé.
fi 2 – 1er mars 2005 – page 12
Un projet européen
Il existe déjà des logiciels de gestion de conférence sur
Internet et de nombreux organisateurs de conférence développent un système temporaire de pages Web et de scripts,
utilisé seulement pour une conférence. Après une étude
approfondie de ces solutions, nous avons été convaincus de
la nécessité de créer un nouveau système comprenant les
fonctions suivantes:
❚ gérer toutes les parties de l’organisation d’un évènement,
de son annonce à son archivage
❚ assurer le support à de simples réunions comme à des
ateliers de plusieurs semaines.
❚ offrir la possibilité d’enregistrer et de stocker les matériels
multimédias (vidéos)
❚ organiser, classer et récupérer plusieurs conférences en
réutilisant les évènements passés
❚ veiller à ce que tous les matériels et descriptions des conférences puissent être transférés sur un système d’archivage
à long terme.