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.