5
25.05.2010
http://dit.epfl.ch
Gagnez ce billet !
p/a EPFL - Domaine IT - CP 121 - CH 1015 Lausanne 15 - tél. +41 21 69 322 11
Concours de la meilleure nouvelle tinyurl.com/fi-concours
Analyse
Zéro
Actualités Web2010
AnneSylvie.Borter@gmail.com, illustratrice Laurent.Kling@epfl.ch, EPFL –STI, passionné par l'histoire des ordinateurs Jacqueline.Dousson@epfl.ch, EPFL-DIT, rédacteur FI
Natalie Meystre, Pierre Mellier, 6
Jérome Grosse Echos du ForumIT de printemps Jacqueline Dousson
14
Secure-IT votre affaire 24
Patrick Saladino
Analyse
Un mot: zéro — trois regards: informatique, historique et visuel.
zéro binaire – LK
Mot-croisé: zéro Laurent Kling, Jacqueline Dousson
1
& Anne-Sylvie Borter
Architecture humaine – architecture informatique 3
Laurent Kling Choix d’un framework – Django
Gregory Favre
11
FlashiPhone – QR Code François Roulet
12
GPU, environnements de programmation CUDA Francis Lapique
19
Comment faire? myYMozilla Vittoria Rezzonico
8
Télérama François Roulet
15
Prochaines parutions No Délai de rédaction Parution 6
03.06.10
22.06.10
SP
01.07.10
31.08.10
7
02.09.10
21.09.10
tout public public averti expert
Réduite à sa plus simple expression, l’informatique est construite autour du code binaire, composé de deux états, 0 et 1. Pour le zéro, le mathématicien va disserter sur sa propriété d’élément neutre pour
l’addition et d’élément absorbant pour la multiplication, un programmeur en Pascal va peut-être considérer le 0 comme nil pour vérifier le contenu d’un pointeur. Dans le monde réel, la seule distinction entre 0 et 1 c’est deux états d’un élément matériel: z le courant passe, z la lumière est polarisée, z la capacité est chargée, z le changement de flux magnétique. .. /.. Suite page 2
Mot-croisé: Zéro C’est uniquement la convention qui décide l’état zéro dans ces dispositifs matériels, a priori il est difficile d’établir si un trou dans une carte ou un ruban perforé représente un 0 ou un 1. C’est souvent le choix du créateur de la technologie qui définit le un et son corollaire le zéro. Maintenant le nombre de zéros et de uns contenu dans les composants informatiques donne le tournis, un disque dur de 2 To comporte 8’796’093’022’208 informations binaires qui peuvent être des zéros ou des uns. Cette information est structurée sous la forme de secteurs et de pistes sur les deux faces de chaque plateau. De par sa nature physique, des défauts sont présents qui vont réduire la taille utile disponible pour les usagers. Au terme de sa vie, le disque dur va émettre un bruit de ferraille indiquant une capacité nulle ! La mémoire dynamique doit être rafraîchie 156 fois par seconde, une étude particulièrement intéressante de Bianca Schroeder de l’université de Toronto avec des ingénieurs de Google devrait nous conduire à n’utiliser que de la mémoire avec parité: http://www. cs.toronto.edu/~bianca/papers/sigmetrics09.pdf. Sur un parc de la taille de Google, 8% des barrettes mémoire présentent 3’700 erreurs par année. Un autre élément intéressant de cette étude est que le nombre d’erreurs n’est pas affecté par la température mais que la charge elle, y est liée; finalement qu’une erreur corrigeable précède souvent une erreur définitive ! Malheureusement, de nombreux ordinateurs ne possèdent pas de correction d’erreurs ECC sur leur DRAM laissant supposer que les résultats de nos calculs peuvent être erronés. Encore un zéro pointé pour les concepteurs pour ne pas avoir tenu compte de la réalité statistique.
d’unité pour un certain ordre décimal. Pour les Indiens, cette absence évoquait le ciel; la voûte céleste est souvent représentée par un demi-cercle ou un cercle entier, et voilà notre zéro inventé. Avec ce concept, les savants indiens ont permis l’arrivée de l’arithmétique moderne, et c’est la seule civilisation qui a fait cette découverte majeure. Mais il fallu beaucoup de temps pour que le zéro parvienne jusqu’à nous. De nombreux échanges entre Arabes et Indiens ont eu lieu dès le 8ème siècle; les savants arabes se sont ainsi formés à l’astronomie indienne et en même temps à la numérotation qu’ils ont adoptée, et voilà le zéro du côté du Moyen-Orient et du Maghreb et bien sûr de l’Andalousie. Mais ce n’est qu’au 12ème siècle que l’Europe latine prit vraiment connaissance des oeuvres des savants arabes; de nombreux érudits les ont traduits et malgré la résistance des clercs attachés à l’ancienne numérotation en chiffres romains, les nouvelles méthodes de calcul basées sur la numérotation arabe, les neuf chiffres et le zéro, firent de plus en plus de disciples, en tout cas du côté des savants et des scientifiques, les algoristes (du nom de Al Khuwarizmi, auteur du 9ème siècle de livres célèbres sur l’arithmétique). Les commerçants et les banquiers ont continué à utiliser les abaques archaïques, que la Révolution française a interdit dans les écoles! Les Arabes avaient nommé le zéro: sifr, en reprenant l’idée de vacuité exprimée par le mot sanskrit Shûnya; en Europe, le nom a été latinisé, il est devenu zephirum en Italie, qui donnera zefiro puis zéro. Le même mot sifr a donné également naissance au mot français chiffre. Mais c’est une tout autre histoire! (très largement inspiré de l’Histoire universelle des chiffres, de G. Ifrah - Bouquins) n
sifr – JD Pour trouver l’origine du zéro, il faut regarder du côté de l’Inde. Très tôt, sans doute quelques siècles avant notre ère, les Indiens ont inventé une numérotation à neuf chiffres (sans le zéro); ils plaçaient les neuf chiffres dans des colonnes correspondant à leur ordre décimal; au début cela se faisait par terre, en traçant les chiffres dans des colonnes dessinées dans la poussière du sol, un espace vide signifiant l’absence d’unité dans cet ordre. Quelques siècles plus tard, vers le 4ème siècle, les arithméticiens indiens ont ressenti la nécessité d’inscrire ces chiffres sur un support durable, une feuille de palmier par exemple tout en faisant abstraction des colonnes; il fallut alors créer un signe pour marquer l’absence
Impressum Les articles ne reflètent que l’opinion de leurs auteurs. Toute reproduction, même partielle, n’est autorisée qu’avec l’accord de la rédaction et des auteurs. Abonnement à la version électronique du FI en envoyant un courrier à: fi-subscribe@listes.epfl.ch
2 flash informatique
Une dette moins zéro est une dette. Un bien moins zéro est un bien. Zéro moins zéro est nul. Une dette retranchée de zéro est un bien., Alors qu'un bien retranché de zéro est une dette. (Bâhmasphutasiddhânta, en 628 ap. J.-C.)
Rédacteur en chef: Jacqueline Dousson, fi@epfl.ch Mise en page & graphisme: Appoline Raposo de Barbosa Comité de rédaction: Aristide Boisseau, Paulo de Jesus, Patrice Fumasoli, Jean-Damien Humair, Laurent Kling, Julia Paolini, Vittoria Rezzonico, François Roulet,
Christophe Salzmann, Predrag Viceic & Jacques Virchaux Impression: Atelier de Reprographie EPFL Tirage: 4000 exemplaires Adresse Web: dit.epfl.ch/FI-spip Adresse: Domaine IT EPFL CP 121, CH-1015 Lausanne 15 Téléphone: +4121 69 32246 & 32247
Analyse
Architecture humaine – architecture informatique Laurent.Kling@epfl.ch EPFL – STI, coordinateur informatique à la faculté
Technical choices for a human organization, the specific case of datastoring for the School of Engineering. Choix techniques pour une organisation humaine; le cas spécifique de stockage de données pour la faculté STI.
La civilisation moderne, notre architecture humaine Il y a 5000 ans, nous sommes entrés dans le monde moderne, un état centralisé avec ses corollaires: l’impôt, l’administration et les fonctionnaires. Les habitants de la Mésopotamie ont largement eu le temps de remplir le courrier des lecteurs sous la forme de tablettes d’argile écrites en cunéiforme pour se plaindre du manque de respect des jeunes générations et du poids écrasant de la fiscalité. Actuellement, malgré les dorures de la technologie de l’information nous sommes tributaires de principes d’organisation qui commencent par la constitution, se prolongent par les lois et finalement sont mis en œuvre par les processus administratifs.
Pour un chercheur de l’EPFL, cette organisation est scellée dans une hiérarchie à cinq niveaux: EPFL Faculté Institut Laboratoire Individu Gardiens du temple, prêtres contemporains, les accréditeurs suivent les saintes Écritures pour que chacun trouve sa place. Comme reflet de la complexité actuelle, nos rattachements peuvent être multiples. Pour l’individu, l’informatique moderne représente un moyen extraordinaire de multiplier les canaux de communication et permet à chacun d’être son propre démiurge dans sa représentation du monde. Dans une ivresse passagère, on peut même imaginer que ces technologies nous sont offertes sans effort. En pratique, c’est bien l’interconnexion des systèmes qui autorise la production de ces services, le Web étant une fenêtre sur des univers parallèles interconnectés.
Architecture informatique, choix ou héritage Naïvement, nous imaginons que les choix techniques sont toujours issus de réflexions profondes qui tiennent compte des futurs possibles, en pratique la réalité est plus prosaïque, par exemple le nombre de pixels de votre écran. À la fin des années 1980, la résolution de votre écran d’ordinateur pouvait être de 640 pixels sur 480 pixels, le standard VGA, ensuite il a été possible d’atteindre 800 x 600 pixels. NTSC
CGA
720 x 480
320 x 200
WVGA 800 x 480
WVGA
QVGA
854 x 480
320 x 240
WSVGA 1024 x 600
1152 x 768
VGA
HD 720 1280 x 720
WXGA 1280 x 768
640 x 480
PAL
WXGA
1366 x 768
1280 x 800
768 x 576 1440 x 900
SVGA 800 x 600
XGA
1024 x 768
1440 x 960
WSXGA+ 1680 x 1050
HD 1080 1920 x 1080
2K
1280 x 854
2048 x 1080
WUXGA
1280 x 960
1920 x 1200
SXGA
1280 x 1024
17:9
SXGA+ 1400 x 1050
16:9
5:3
UXGA
1600 x 1200
3:2
QXGA
2048 x 1536
5:4
8:5
(16:10)
4:3
WQXGA 2560 x 1600
QSXGA 2560 x 2048
Résolutions d’écrans – en.wikipedia.org/wiki/File:Vector_Video_Standards2.svg
Musée du Louvre – la stèle du Code de Hammurabi (1792-1750 av. J.-C.) qui représente le recueil juridique le plus complet de l’Antiquité avant l’Ancien Testament. ©rezasetoodeh
Si le rapport entre largeur et hauteur semble familier (4/3 comme dans nos anciens tubes cathodiques de télévision) pourquoi 640 ou 800 pixels de largeur (5 x 27 et 52 x 25) ? 25 MAI 2010 - N°5
3
Architecture humaine – architecture informatique Dans un premier temps, on peut revenir à l’histoire de l’informatique et se souvenir des terminaux alphanumériques qui présentaient 80 caractères de largeur, ce qui explique la similitude entre 640 (8 x 80) et 800 (10 x 80). Le mystère reste entier sur l’origine de 80 ? : z société secrète, z numérologie, z astrologie, z créationnisme. Pour trouver la réponse, il faut remonter à la protohistoire de l’informatique. En 1880, le bureau du recensement aux États-Unis procéda à sa dernière opération de traitement manuel de données, pour celui de 1890, il organisa un concours pour définir la méthode automatisée la plus adaptée à une population répartie sur un continent.
Signe d’un choix délibéré, l’imprimante à aiguille ImageWritter avait également 72 et 144 dpi de résolution. Le même type de décision consciente et audacieuse est apparu en 1987 avec le Mac II, une description de la couleur sur 48 bits. Naturellement, ce fut sur cette plate-forme Macintosh que fut bâti Photoshop !
Architecture informatique en pratique, choix ou héritage ? Maintenant, les usagers peuvent accéder à trois types de services :
Universels organisés autour de l’individu comme Gmail, Facebook… Corollaire du Web 2.0, ces outils ont plusieurs points en commun : z l’utilisation du réseau Internet, z une dématérialisation pour l’usager, z un accès personnel direct. A priori, on pourrait penser que cette méthode est la panacée, la disponibilité immédiate des données et de l’application peut être séduisante. Il existe quand même des bémols à ce monde enchanté : z la nécessité de disposer un accès à Internet, z la perte du contrôle sur les données, z le besoin de recréer son réseau social dans chaque outil. Si on désire bâtir son architecture informatique autour des services universels, reste le problème de la communication entre ces outils, ce sont encore des îlots isolés sur l’océan des données.
Organisés autour des métiers Machine de Holerith – www.columbia.edu/acis/history/tabulator.html
Pour gagner le concours, Herman Hollerith réinventa la carte perforée avec la mise au point des machines qui permettent de trier les cartons, son entreprise fut Tabulating Machine Co ancêtre d’IBM. En 1928 le format de 80 colonnes fut standardisé, qui sans le savoir allait engendrer 60 ans plus tard la dimension de nos écrans.
Carte perforée de 80 colonnes
Un autre élément important à prendre en considération la forme du pixel, carré ou rectangulaire? Le Lisa d’Apple possédait des pixels oblongs. Pour pouvoir transposer la vision de son écran sur le papier un rapport de forme 1 :1 est nécessaire. En 1984 le Macintosh utilisa 3 éléments fondateurs de la typographie moderne WYSIWYG (what you see is what you get): z un pixel carré, z une résolution de 72 dpi équivalente au point de l’imprimerie anglo-saxonne, z la technologie Postscript sur son imprimante LaserWriter.
4 flash informatique
Il peut être tentant de simplifier l’informatique dans une vision unique, une métaphore de la tour de Babel (un rapport direct avec l’origine de notre civilisation, Babylone est Babel pour les Hébreux). Auparavant, je me suis intéressé à la représentation du bâtiment sous forme de modèle, en particulier pour définir un langage commun à sa conceptualisation. Un chercheur d’IBM Yorktown Heights suivit un séminaire organisé sur cette thématique, naturellement nous lui posâmes la question subsidiaire de savoir si une telle représentation unique était possible, sa réponse fut laconique, non, pas à sa connaissance, mais le sujet est intéressant ! Cette question était déjà résolue dans la pratique: z l’architecte dessine les plans du bâtiment, z sur cette base, chaque corps de métier redessine selon la vision de son métier. Naturellement, le résultat est différent, par exemple le plan de l’architecte représente une hypothétique coupe des murs à hauteur variable avec la dalle sous ses pieds. Un ingénieur civil va, lui, dessiner les dalles avec les murs en dessous pour la descente de charge. L’électricien va dessiner un plan de la dalle avec simultanément les canalisations électriques du plafond (sous ses pieds) et des amenées dans le mur (au-dessus). Le rêve d’un modèle unique regroupant toutes ces visions s’écroule, il ne reste que les métiers. Le corollaire d’un métier est que les outils s’adressent à des spécialistes, expliquant peut-être la difficulté de le transcrire dans un langage compréhensible à tous. À chaque déclaration d’impôt (toujours un héritage de Sumer), nous hésitons sur les ru-
Architecture humaine – architecture informatique briques à remplir malgré une application Java particulièrement bien écrite.
Dicté par la technologie Pour reprendre notre exemple historique de 1987, il est paradoxal de constater la divergence de vues sur les performances d’un affichage couleur pour un ordinateur: Apple Mac II
IBM PC
Résolution
1152 x 870 72 dpi
640 x 480 de 60 à 110 dpi
Couleurs
16 Millions
16 parmi 256
Méthode
3 x 8 Bit DAC
mappe de couleur (lookup table) x 3 DAC
API Programmation 3 x 16 Bit
directe
À l’époque, l’idée de décrire une couleur sur 48 bits paraissait folle. Dans le même ordre d’idée, Steve Balmer, patron de Microsoft déclarait le 22 septembre 2007 que l’iPhone était ridicule: «un téléphone de 500$, le téléphone le plus cher du marché qui ne peut intéresser un client commercial, car il ne dispose pas d’un clavier…» www.youtube.com/v/So7qrFO_p44. Maintenant, même chez les plus fervents défenseurs de Microsoft on peut constater le nombre de personnes qui sont tombées dans cette folie.
Fichiers sécurisés, service universel, métier ou technologique ? Confronté aux besoins de disposer d’un espace de fichiers sécurisés pour la faculté STI en 2005, j’ai envisagé différentes possibilités d’implémentation, rapidement une série de constantes ont émergé: z un usager est toujours inscrit dans une logique administrative: ses accréditations, z son travail est lié à l’unité à laquelle il est rattaché, z par nature un scientifique aime communiquer avec ses collègues, z il aime disposer d’un espace propre, z chaque changement d’affectation est une autre vie. Comme point de départ de l’organisation logique, le choix s’est rapidement porté sur un mimétisme avec les structures de l’EPFL, dans ce sens, ce service est métier, car propre à notre hiérarchie. Rationnellement, j’ai envisagé l’utilisation d’un service universel dématérialisé, mais la perte du contrôle sur les données et la proximité immédiate d’une infrastructure très performante avec un degré de sécurité très élevé a éliminé cette hypothèse.
Limites technologiques Sur le plan humain, l’organisation sociale est un élément préalable, notre action dans le quotidien s’inscrit dans un cadre défini. Naturellement, on peut opposer à ce principe d’organisation l’anarchie, une forme de gouvernement sans maître ni souverain. Sans évoquer un débat entre ces deux formes d’organisation de la société et des utopies qui en découlent, il est intéressant d’envisager le problème selon les deux bouts de la lorgnette:
Humaine Usager = besoin = service {dans une organisation définie} Technologique Technologie = outil > service ≈ besoin > usager {dans une organisation définie} En pratique l’écueil technologique le plus important n’est pas technique, mais humain, rendre invisible la technologie sous-jacente. Il paraîtrait incongru de demander à quelqu’un qui branche une prise électrique de comprendre l’organisation interne de l’infrastructure. Pourtant, pour accéder à des ressources informatiques c’est le gymkhana qu’on demande aux usagers. Tout principe d’organisation se heurte à des limites d’implémentation, rares sont les entreprises qui comme Apple définissent un cadre audacieux. Pour un espace de fichiers, la principale limite est la taille du volume et celle-ci est rarement infinie. Il reste à trouver le dénominateur commun entre technologie et organisation.
À plat Cette méthode semble évidente par son apparente simplicité, elle est parfaitement adaptée à un individu cueilleur de technologie. La difficulté réside dans sa réalisation, avec un grand nombre d’usagers (> 1000) la taille du volume devient ingérable pour la sauvegarde. Il faut diviser pour régner en répartissant les usagers par groupe ! La définition des groupes tient de l’alchimie pour les usagers : z avoir un identifiant numérique unique, le SCIPER, z prendre le dernier chiffre comme séparateur de groupe, six pour moi, z créer 10 serveurs de fichier (de 0 à 9), z créer 10 volumes (de 0 à 9), z avoir un identifiant alphanumérique, par exemple kling. Et combiner le tout pour obtenir le chemin d’accès, le mien sera smb://files6/dit-file6/data/kling. Pour mon collègue, la gymnastique est: smb://files2/dit-files2/data/ulrich.
Hiérarchique Le problème est le même dans une organisation humaine, il faut définir des groupes avec une pierre de Rosette implicite, la hiérarchie: EPFL Faculté = STI Institut = STI-SG Laboratoire = STI-IT Individu = kling La combinaison du tout: Pour moi
smb://stisrv/sti-sg/sti-it/kling
Pour mon collègue
smb://stisrv/sti-sg/sti-it/ulrich
Notre dossier commun de smb://stisrv/sti-sg/sti-it/commun l’unité Notre dossier commun de smb://stisrv/sti-sg/commun l’institut Sur le plan technique, la hiérarchie se confond avec l’infrastructure, c’est l’institut qui définit le volume. 25 MAI 2010 - N°5
5
Architecture humaine…
Actualités
Services en parallèle Les usagers possèdent 2 types de données: z travail, z privé. Pour permettre de répondre à toutes les demandes, les usagers de la Faculté STI possèdent maintenant deux espaces sécurisés: Travail 20 Go par stisrv usager Privé
hiérarchique conserver au départ de l’unité
10 Go par files[0..9] à plat usager
effacer au départ de l’EPFL
Il faut veiller à ce que les fichiers privés ne contaminent pas les espaces de travail communs ou nominatifs et que les documents de travail ne s’égarent pas dans l’espace privé car ils seront immanquablement perdus.
Conclusion, un monde en constante mutation Régulièrement, il faut transvaser les données entre infrastructures. Malgré une planification et des tests préalables, il arrive qu’un incident se glisse dans le processus. Le lundi de Pâques 5 avril 2010, à la fin de la migration des données de travail entre deux infrastructures de stockage, il est apparu un phénomène fâcheux, les utilisateurs possédaient l’ensemble de leurs droits et pouvaient travailler, mais la hiérarchie était figée ! Après investigations, il est apparu qu’une étape dans la migration demandait de ne pas avoir d’observateur extérieur, un paradoxe digne du chat de Schrödinger. Je remercie Aristide Boisseau et Lucien Chaboudez du DIT avec l’assistance d’Olivia Smith d’EMC d’avoir pu résoudre ce problème sans interrompre le service. Ces transferts entre infrastructures vont certainement se généraliser et peut-être un jour l’informatique arrivera au degré de maturité qu’a atteint notre alimentation électrique. Quand on branche un appareil sur une prise 230V, il nous apparaît naturel de disposer immédiatement de l’énergie souhaitée, nous n’imaginons pas l’interconnexion des réseaux électriques à haute tension et leurs équilibrages. On peut espérer qu’un jour les usagers disposeront de services informatiques génériques où la quincaillerie ne sera plus visible. n
Fragment du réseau interconnecté européen des lignes à haute tension. www.entsoe.eu/index.php?id=77
6 flash informatique
Web2010 Natalie.Meystre@epfl.ch, EPFL - Domaine IT, architecte de l’information Pierre.Mellier@epfl.ch, EPFL - Domaine IT, responsable du KIS Jerome.Grosse@epfl.ch, EPFL – directeur médias et communication
Next summer, EPFL Web sites will be greatly transformed. Here are the milestones of this major change. Cet été, les sites Web de l’EPFL von connaître une transformation majeure. Voici les différentes étapes de cette mue.
Planning de mise en route L’objectif de Web2010 est de transformer et d’améliorer le design et la technologie utilisés sur les principaux sites Web de l’EPFL. Son but est de transformer le domaine .epfl.ch (environ 1’500 sites, 2 millions de pages) en un outil de communication à la hauteur des besoins et de l’image de l’institution. Web2010 s’articule en 4 pôles: z présentation de l’information (graphisme – cohérence de l’image – lisibilité…); z organisation de l’information (ergonomie – navigation – mise en page des éléments…); z révision du contenu (intranet versus internet – traduction – contenus obsolètes …); z mise à jour des technologies (homepage, CMS, outil actu, RSS, outils sociaux, accessibilité - statistiques…). A cette occasion, le CMS (Content Manager System) Jahia4 bénéficiera d’une importante mise à jour. Une moitié environ des sites de l’EPFL utilisent actuellement cet outil, alors que les autres employent d’autres techniques et parfois d’autres présentations graphiques qui nuisent à la reconnaissance et à la force de l’image de l’institution. Le passage des sites actuels sur la nouvelle charte graphique a également l’ambition de mettre à jour les contenus de ces sites, et de se débarrasser de l’information obsolète, redondante ou inutilement dupliquée. Les changements portent donc autant sur l’aspect visuel des sites (graphisme) que sur la mise en place d’une typologie de navigation commune (cohérence de navigation renforcée). Le KIS développe également un nouvel outil d’actualités scientifiques et académiques, qui facilitera la circulation des éléments d’informations quotidiens entre les labos, les instituts, les facultés, les portails et la page d’accueil EPFL. Cet outil sera à disposition de toutes les unités: z Il permettra à un webmaster de labo d’écrire un article, puis de le publier sur son propre site Web et de le mettre dans un panier commun afin de le remonter à d’autres niveaux, faculté ou page d’accueil. z Il offrira aux webmasters de la page d’accueil www.epfl.ch et des sites de facultés la possibilité de récupérer des infos locales et de les afficher sur leurs propres sites Web.
z De même, des publics externes pourront s’abonner à ces flux d’actualités selon leurs centres d’intérêts, ainsi que publier des références aux articles EPFL sur des sites de réseaux sociaux. Accessibilité: une personne aveugle a été engagée comme stagiaire pour s’assurer que tous les éléments de Web2010 soient compatibles avec les normes d’accessibilité (qui, au passage, sont également excellentes pour le référencement des pages dans les moteurs de recherche comme Google).
Transfert de vos anciens sites Web sur Jahia 6.0 Migration semi-automatique
Planning résumé de mise en œuvre Quand
Quoi
Qui
Avril-mai
Présentation des maquettes graphiques II à la KIS - Mediacom direction et aux facultés (retour des input)
7 mai
Ouverture du serveur de comparaison pour les KIS – Jahia sites actuellement sur Jahia 4 Webmasters facultés Ouverture du serveur Jahia 6 pour des early Webmasters EPFL adopters
7 mai – 18 juin Etablissement de la liste officielle des sites Web KIS – Jahia à migrer, prise de contact avec les Webmasters Webmasters facultés Webmasters EPFL Début juin
Ouverture des cours Jahia 6.0
KIS Webmasters facultés Webmasters EPFL
17 juin
Présentation publique de Jahia 6.0 KIS – Jahia Mise à disposition de la feuille de style CSS, des Webmasters facultés modèles HTML et de la documentation Webmasters EPFL Ouverture officielle du nouveau serveur Jahia
1er juillet Ouverture de la task force Web 2010 de soutien KIS à fin décembre Mise en ligne directe de certains sites de labos Webmasters facultés Webmasters EPFL
Jahia 6 a été choisi comme outil de 13 août Mise à disposition de l’outil d’actualité Mediacom mise en ligne facilitée de contenu en 6 septembre Ouverture et mise en ligne des sites Web KIS – Jahia (Home page, facultés, portails, sites labos…) Webmasters facultés succession de Jahia 4. Actuellement, et de l’outil d’actualités Webmasters EPFL le KIS travaille sur une migration seSeptembre Mise en ligne de l’ensemble des sites KIS – Jahia mi-automatique des contenus en - décembre Webmasters facultés ligne sur Jahia 4 dans la ligne graWebmasters EPFL phique Web2010 et sur Jahia 6. Jahia La date du lundi 6 septembre 2010 a été fixée pour ouvrir officiellement les sites Web. 6 reprend les éléments appréciés sur Jahia 4 et ajoute de nouvelles fonctionnalités attendues, entre autres la implication importante est demandée aux webmasters de tous possibilité d’avoir des adresses de page (ou URL) en langage comles sites Web durant les mois de juin, juillet et août 2010. Le KIS mun et le copier-coller des éléments. mettra à leur disposition une task force de soutien d’une dizaine de personnes compétentes, des étudiants-assistants versés à la Mise en ligne anticipée fois dans les bonnes pratiques du Web, ainsi que dans la connaisPour éviter la modification simultanée des anciens sites Web sance de la Charte Web2010 et de Jahia 6. Ces assistants pourront et des nouveaux sites Jahia 6 et profiter de l’été pour faire ces conseiller les webmasters, répondre aux questions techniques les grands chantiers, la mise en ligne des sites Web de laboratoires plus pointues et aider les webmasters les moins professionnels à sera autorisée dès le mois de juillet, en anticipation de l’ouverture migrer leurs contenus. Des cours et une documentation en ligne officielle de l’ensemble des sites. Seuls les sites centraux et vitrines et imprimée seront à disposition de toute personne intéressée. très visibles (page d’accueil, sites de facultés, portails, sites les plus consultés) seront entretenus à double en partie entre juillet et Temps nécessaire au transfert septembre et mis en ligne le 6 septembre 2010. Il est extrêmement difficile d’estimer le temps et les ressources nécessaires pour transférer un site Web de Jahia 4 à Jahia 6, car ce Soutien technique du KIS (task force Web2010) temps dépend de la complexité du site, de la différence de strucMême si une grande partie du contenu actuellement en ligne sur ture, de l’aptitude des webmasters et d’autres facteurs mais on le domaine epfl.ch grâce à Jahia 4 sera migré automatiquement, peut penser que la fourchette de temps devrait se situer entre : un important travail de révision doit être entrepris pour vérifier z 1 jour pour les sites très simples (5-10 pages); l’organisation de ce contenu sur chaque site, ainsi que sa pertiz 1 semaine pour les sites plus complets (20-100 pages); nence et sa qualité. Cet effort peut varier d’un site à l’autre. Une z 5-6 semaines pour les sites les plus complets. n 25 MAI 2010 - N°5
7
Comment faire ?
myYMozilla Vittoria.Rezzonico@epfl.ch EPFL - SB-IT, spécialiste HPC et enthousiaste des logiciels libres
Any employee or student at EPFL has a my account. In this article, I will show some fairly unknown ways to couple my with the Mozilla Open Source Suite. I will consider Mozilla Firefox and Mozilla Thunderbird. These two programs are available for all platforms (Linux, MacOS, Windows, Solaris, ...); thus the processes described in this article can apply to everybody. Tout collaborateur ou étudiant à l’EPFL possède un compte my1. Dans cet article nous allons illustrer des façons alternatives d’utiliser ce service avec la suite de logiciels libres Mozilla, en particulier Mozilla Firefox et Mozilla Thunderbird (navigateur Web et client mail). Ces deux logiciels sont disponibles pour toutes les plates-formes (Linux, MacOS, Windows, Solaris, …). Tous les procédés décrits ci-dessous seront ainsi valables pour tout le monde.
Comment faire? Premièrement, il faut installer l’extension Xmarks dans Firefox. Ensuite, l’extension vous proposera un wizard, que vous allez refuser. Vous allez par contre configurer Xmarks à travers les préférences de l’extension (voir figs 1 et 2), et vous allez tout de suite cliquer sur l’onglet Advanced. Activez Use own server et insérez comme Bookmark URL le chemin vers un fichier de nom quelconque (non existant la première fois) dans votre espace privé. La deuxième fois que vous ferez cette opération depuis un autre poste, le fichier sera déjà là. Par exemple, l’utilisateur kermit indiquera comme URL: https://documents.epfl.ch/users/k/ke/kermit/private/ xmarks.json. Vous pouvez connaître votre URL en vous connectant sur l’interface my, et en cliquant sur i. L’URL HTTP/WebDAV apparaîtra en bas (voir fig. 3).
Partie 1: myYFirefox Depuis la nomadisation de l’informatique, il n’est pas rare de disposer de plusieurs ordinateurs (travail, maison, laptop,...). Un des problèmes les plus courants est la synchronisation des données. Nous allons nous intéresser ici aux bookmarks Firefox en particulier. L’extension & Xmarks (auparavant connue sous le nom de FoxMarks) nous permet de synchroniser les bookmarks entre plusieurs postes de travail et, depuis le changement de nom, à partir de différents navigateurs, même si nous allons ici traiter uniquement le cas de Firefox. Le comportement standard de Xmarks est de stocker les bookmarks sur un serveur chez xmarks.com, mais certains sont réfractaires à stocker leurs données on ne sait trop où. Nous allons donc stocker nos bookmarks sur my.epfl.ch. Ceci a plusieurs avantages intrinsèques à la nature de my: z vos bookmarks sont à l’EPFL, et non pas dans les nuages &. z my intègre la gestion des révisions 2. Ceci signifie (au niveau plus pratique) que si par erreur vous écrasez votre fichier de bookmarks sur le serveur, vous pouvez récupérer la version précédente en quelques clics à travers l’interface Documents de my.
1 2
figs 1 et 2 – configuration de Xmarks
Une fois l’URL insérée, dans l’onglet status vous ajouterez votre username et votre mot de passe Gaspar. Vous pouvez maintenant commencer la synchronisation. Xmarks offre aussi la possibilité de synchroniser les mots de passe sur un serveur distant. Mais cela n’est pas recommandé.
voir my.epfl.ch lire: WebDAV – la recherche, les droits d’accès et versioning par Predrag Viceic, FI 7/2008, ditwww.epfl.ch/SIC/SA/SPIP/Publications/spip.php?article1508
8 flash informatique
myYMozilla z intégration des calendriers des groupes3; z si vous êtes en déplacement, vous pouvez accéder à vos calendriers (remplis depuis Thunderbird) depuis n’importe quel cybercafé avec l’interface my; z Vous pouvez afficher une partie de vos calendriers ou vos disponibilités dans une page Web4 Cette procédure peut être également appliquée à Mozilla Sunbird.
Comment faire?
fig. 3 – URL HTTP/WebDAV dans l’interface my
Premièrement, il vous faut Thunderbird et l’extension Lightning. Une fois Lightning installé, en sélectionnant l’icône correspondante vous affichez l’onglet calendar. Ensuite, vous pouvez créer des nouveaux calendriers avec un clic droit (ou Control-Click sous Mac) dans la zone où sont énumérés les calendriers (fig. 6).
Si vous ne souhaitez pas que Firefox mémorise votre mot de passe Gaspar, vous pouvez ne pas le stocker mais n’oubliez pas de décocher la case remember this password dans la fenêtre de la figure 4 sinon il sera tout de même stocké. Xmarks permet de synchroniser (merge) ou de remplacer les bookmarks stockés. Vous pouvez aussi faire du upload et du download.
fig. 5 – installation de Lightning
fig. 4 - authentification sur serveur my
Partie 2: myYThunderbird Mais qu’est-ce que my a à voir avec un client mail? La réponse est simple: à notre époque moderne, il est habituel d’utiliser le client mail comme calendrier (la raison m’échappe encore, mais soit). L’extension Lightning pour Thunderbird -version 3 ou supérieure– nous permet de bien intégrer un calendrier dans notre client mail – on va même être en mesure d’insérer en un clic des évènements dans notre calendrier lorsqu’on reçoit une invitation. On va donc dans notre cas intégrer les calendriers de my dans Thunderbird. Ceci a plusieurs avantages intrinsèques à la nature des calendriers my:
fig. 6 – ajout d’un nouveau calendrier
voir groupes.epfl.ch lire: Intégration des outils de my.epfl dans vos pages Web par Predrag Viceic, FI 9/2009, ditwww.epfl.ch/SIC/SA/SPIP/Publications/spip.php?article1901
3 4
25 MAI 2010 - N°5
9
myYMozilla Vous allez créer un calendrier réseau:
fig. 7 - choix du type de calendrier: réseau
Maintenant, vous pouvez indiquer soit votre calendrier privé my (voir fig. 8), soit un calendrier de groupe (voir fig. 9).
figs 10 et 11 – URL CalDAV dans my
Maintenant, il ne reste qu’à donner un nom à votre calendrier et entrer votre username et mot de passe GASPAR. fig. 8 – calendrier personnel
fig. 9 – calendrier de groupe
Pour connaître le code du groupe, il suffit de regarder dans l’interface my, dans Views and calendars management. En cliquant sur éditer ( ), vous verrez le lien caldav à insérer dans Lightning.
figs 12 et 13 – étapes finales de la création d’un calendrier
Vous pouvez à présent ajouter des évènements dans vos calendriers my depuis Thunderbird. n GLOSSAIRE
&
Extension: le navigateur Firefox peut être personnalisé par des modules supplémentaires que l’utilisateur installe selon ses besoins. Il existe trois types de modules: • les extensions qui ajoutent des fonctionnalités; c’est ce qui nous intéresse dans cet article. • les thèmes qui modifient l’apparence visuelle de Firefox • les plugins qui gèrent du contenu spécifique (exemple un plugin pour lire des fichiers QuickTime)
10 flash informatique
Les extensions de Firefox étant nombreuses, nous vous conseillons de n’installer que celles quui vous sont nécessaires. Les extensions peuvent parfois provoquer des problèmes de compatibilité entre elles ou de performance (les auteurs des extensions ne communiquent pas entre eux a priori, et certaines extensions qui par exemple analysent le contenu des pages web peuvent demander beaucoup de ressources). Il est conseillé d’installer uniquement des extensions cataloguées sur le site addons.mozilla.org. Thunderbird a aussi ses propres modules supplémentaires, dont Lightning. Deux
séminaires sur les extensions Firefox ont déjà été organisés à l’EPFL, et dans un futur proche, on va avoir un séminaire supplémentaire sur les extensions Firefox et Thunderbird. Pour plus d’informations, elle.epfl.ch/wiki. Nuages: l’expression dans les nuages fait référence au concept Informatique dans les nuages (cloud computing); dans ce modèle qui tend à se répandre, les services (de calcul ou de données) sont répartis sur le réseau Internet, l’utilisateur ne connait plus l’emplacement physique ni même parfois le propriétaire de l’ordinateur hébergeant le service.
Analyse
Choix d’un framework - Django Gregory.Favre@epfl.ch EPFL – Domaine IT, développeur Python pour le projet Infoscience
The advent of blogs, CMSs and RSSs have forever changed our manner to build the Web. Complex applications have gradually replaced HTML pages improved with CGI scripts. The high cost of development of very similar systems has made possible the ermergence of Web frameworks. Faced with the abondance of tools we have chosen Django. L’arrivée des blogs, des CMS et des réseaux sociaux a définitivement changé notre manière de fabriquer le Web. Des applications complexes ont progressivement remplacé les pages HTML enrichies de scripts CGI. Le coût de développement important de systèmes au final très similaires a permis l’émergence des frameworks Web. Parmi la pléthore de ces outils, nous avons opté pour Django.
Le développement d’une application Web n’est pas un processus simple. Après avoir énuméré et décrit toutes les fonctions souhaitées, et avant même de pouvoir s’attaquer à toute forme de logique métier, il reste à: z mettre en place une base de données; z implémenter les tables et leurs relations; z transformer tout ceci en HTML; z définir les URL et comment elles se retrouveront associées aux données; z gérer les utilisateurs et leurs droits d’accès; z ... C’est à ce stade qu’intervient le framework Web. Inutile de réinventer la roue, d’autres l’ont déjà fait, et – il faut l’admettre – considérablement mieux que nous.
Django - The Web framework for perfectionists with deadlines Django est un framework open source basé sur python. Ses créateurs ont choisi de fournir un outil intégré, plutôt qu’un assemblage de projets préexistants (par opposition à son concurrent TurboGears).
Gestion des données La création d’une application Web suppose généralement l’interaction avec une base de données. La connexion à une base ainsi que l’écriture de requêtes sont des tâches relativement simples, mais qui présentent des risques:
z types de données incompatibles entre le langage de programmation et le SGBD &; z syntaxe SQL incompatible entre deux SGBD différents; z problèmes de sécurité (injection SQL). Afin de pallier cela, Django propose un ORM &, qui masque la complexité de la base de données au profit de simples classes python appelées modèles. Il devient ainsi aisé de développer dans un environnement léger comme SQLite et de passer en production sur un moteur plus solide comme PostgreSQL. Par ailleurs, le système s’assure lui-même de la conversion des données vers la base, déjouant au passage les actions malveillantes. L’autre force de la gestion des modèles de données avec Django est la génération automatique des formulaires de recherche, d’ajout ou d’édition.
Génération d’HTML Le développeur a souvent la mauvaise idée de mélanger l’HTML servant à l’interface avec la logique métier de son application, à plus forte raison s’il a été précédemment exposé à PHP. Le moindre changement de design impose alors d’aller modifier du code, avec tous les dangers que cela peut représenter. Django propose un système de templating, permettant de séparer proprement le code HTML de la logique métier. Un graphiste peut ainsi facilement travailler sur l’affichage indépendamment des travaux réalisés par les développeurs. En outre, la structure proposée par Django est extrêmement souple et permet de facilement morceler une page en blocs fonctionnels séparés.
Gestion des URL La différence de lisibilité entre l’adresse monsite.com/blog/vivepython et monsite.com/blog.php?id=234 est flagrante. Posséder des adresses parlantes est non seulement un atout d’accessibilité, mais facilite en outre le travail des moteurs de recherche. Django propose un système de gestion des URL efficace et simple, basé sur des listes d’expressions régulières. Ce système permet de découpler complètement les adresses du code.
25 MAI 2010 - N°5
11
Choix d’un framework - Django
Internationalisation La traduction des applications Web est une évidence dans un pays quadrilingue. Django propose un système d’internationalisation facile à mettre en place, que ce soit dans les templates HTML ou dans le code d’une fonction métier. Les outils proposés savent scanner les fichiers et rassembler les phrases à traduire dans un seul fichier par langue.
Gestion des utilisateurs Lorsque l’on doit gérer des transactions, garder un état cohérent tout au long du processus est indispensable. Qui plus est, on attend généralement d’une application de proposer un moyen d’identification, ainsi qu’une gestion des droits. La complexité d’un tel système rend son développement fastidieux. Django propose une gestion intégrée des utilisateurs. Ce système est extrêmement facile à personnaliser de manière à offrir, par exemple, une authentification via Shibboleth &.
Conclusion Django permet de remplir toutes nos attentes vis-à-vis d’un système. Il permet de s’économiser du temps de développement et par la même de focaliser sur ce qui compte vraiment: la logique métier. À titre d’exemple, un système de blog simple avec interface d’administration tient en moins de 60 lignes de code! n GLOSSAIRE
&
ORM (Object-Relational Mapper): technique de programmation faisant le lien entre le monde de la base de données et le monde de la programmation objet. SGBD: Système de Gestion de Bases de Données. Ensemble de logiciels servant à la manipulation de bases de données. Shibboleth: mécanisme permettant de déléguer l’authentification d’un utilisateur à son établissement d’origine.
La couleur 2010
12 flash informatique
Analyse
FlashiPhone – Francois.Roulet@epfl.ch EPFL - Domaine IT, heureux utilisateur de iPhone
QR Code Recognition Reconnaissance du QR Code Bien que le QR Code ne soit pas nouveau, l’actualité régionale l’a récemment fait ressurgir, depuis son usage pour la diffusion des horaires en temps réel par les T-L (Transports publics lausannois). En effet, depuis le mois de décembre 2009, les T-L ont apposé les QR Code de l’horaire instantané du métro m1 à chaque arrêt. Dès lors, n’importe quel téléphone mobile doté d’un appareil photo, pourra lire et décoder le QR Code, qui vous redirigera aussitôt sur la page Web affichant l’horaire en temps réel de la ligne et de l’arrêt correspondants. Le QR Code, acronyme de Quick Response Code, est une évolution du code matriciel, ou code bi-dimensionnel, dont la lecture est notablement accélérée. Il cumule les qualités individuelles de ses prédécesseurs, à savoir une grande capacité de données sur une faible surface imprimée. Son domaine d’application est plus vaste que le simple référencement de produits, et s’étend notamment à la transmission d’adresses, URL et Vcard. Nous sommes tous familiers des codes barres unidimensionnels qui étaient déjà largement répandus depuis trois décennies aux USA pour l’étiquetage de produits commerciaux, avant de traverser l’Atlantique plus récemment et devenir le EAN (European Article Number). Il s’est notamment imposé dans l’édition, avec le célèbre code ISBN (International Standard Book Number), ou encore ISSN (International Standard Serial Number) pour les publications en série, tel notre journal – voir le code barre en dernière page. Ces codes unidimensionnels, se reconnaissent aisément à leur alignement de barres noires rectilignes sur fond blanc, d’épaisseur et d’espacement variables. Ensuite, sont apparus les codes bidimensionnels DataMatrix, que vous observez sur le courrier postal, dont la densité d’information véhiculée, de par sa nature quadratique, est sensiblement supérieure, pour dépasser 3000 chiffres. D’autres codes plus imposants sont les Stacked Bar, codes à balayage, qui ornent l’entête des déclarations fiscales vaudoises. Ces évolutions ont pour but de mettre à disposition une charge utile bien supérieure, qui n’est plus limitée à quelques chiffres. Selon la taille et le niveau
QR Code QR Code
de codage, le QR code peut stocker jusqu’à 4296 caractères alphanumériques, comme le montre le tableau. Le QR Code, tout comme ceux énumérés présentement, est ouvert au domaine public, et nous pouvons librement le générer sans devoir payer de droits d’auteur.
Les applications pour lire et pour créer un QR Code
Developer(country)
DENSO(Japan)
Type Data capacity
Matrix Numeric Alphanumeric Binary Kanji
Main features
7,089 4,296 2,953 1,817
PDF417
Symbol Technologies (USA) Stacked Bar Code 2,710 1,850 1,018 554
Large capacity, small printout Large capacity size High speed scan All categories OA AIM AIM International International JIS ISO ISO
DataMatrix
RVSI Acuity CiMatrix (USA)
UPS (USA)
Matrix
Matrix
3,116 2,355 1,556 778
138 93
Small printout size
High speed scan
Alors que les applications disponibles pour iPhone sont obligatoirement à télécharger Main usages FA depuis le site iTunes Store, celles pour les téAIM léphones mobiles Java sont à charger direcInternational Standardization tement depuis les sites de leurs auteurs dont ISO le nom de domaine se termine généralement par l’extension .mobi. Quant à la génération Tableau comparatif des codes 2D de ces pictogrammes, vous trouverez nombre de programmes libres écrits en Java, ou de sites pour les générer à la volée. Exemples d’application L’application gratuite i-nigma pour iPhone est capable de reconnaitre les QR Code, les DataMatrix ainsi que les EAN unidiz distribution des profils de mensionnels. Toutefois, la médiocre optique à focale fixe des deux configuration wireless EPFL pour premières générations de iPhone pénalise la lecture des petits piciPhone; togrammes, car pour obtenir une grandeur apparente suffisante, z l’horaire du métro m1; l’optique se retrouve alors hors de sa profondeur de champ. z notre campagne de sensibilisation Depuis cette année, nombre de grandes surfaces commerciales, à la sécurité informatique. à commencer par la Migros, ont généralisé l’étiquetage des articles en Code Barre EAN. Pour les décoder, une autre application, restreinte aux codes unidimensionnels EAN s’avère plus optimale: CodeCheck.info, elle aussi disponible gratuitement pour iPhone et mobiles GSM. Son avantage est de rechercher directement la référence des articles dans une base de données suisse, nous affichant une pléthore d’informations quant à la composition de la marchandise.
Maxi Code
Logistics AIM International ISO
Références Denso-wave: www.denso-wave.com/qrcode/ aboutqr-e.html
Wikipedia: en.wikipedia.org/wiki/QRcode i-nigma: www.i-nigma.com/ Codecheck: www.codecheck.info/ T-L: www.t-l.ch/contenu/qr-codes.html PostScript Barcode Generator: www.terryburton.co.uk/barcodewriter/generator/ n
Structure du QR Code
25 MAI 2010 - N°5
13
Actualités
Echos du
de printemps
Jacqueline. Dousson@epfl.ch EPFL–Domaine IT, Rédacteur du Flash informatique
Twice a year, ForumIT is meeting point for IT Domain and IT-people from the EPFL labs (more than 200 people). If you could not attend the April 29 Forum IT, you will find here abstracts of the tackled subjects. The presentations are available on the site dit.epfl.ch/page55589.html.
Deux fois par an, les ForumIT sont des lieux de rencontre entre le DIT et les responsables informatique d’unités (plus de 200 personnes ont ce rôle à l’EPFL). Pour ceux qui n’ont pas pu assister à celui du 29 avril dernier, voici quelques mots sur les sujets abordés. Les présentations complètes sont sur le site dit.epfl.ch/page55589.html.
IT@EPFL Jean-Claude Berney a montré que ces six derniers mois ont été assez chargés pour l’informatique à l’EPFL. z Un audit mandaté par le CEPF a eu lieu en novembre, il a mis en évidence un manque de coordination au niveau du système d’informations (SI), une absence de gestion centrale des projets IT et un besoin de définir des standards. Ces recommandations vont dans le sens des propositions faites par D. Rey (coordinateur du SI depuis novembre 2009) à la Direction de l’EPFL; celle-ci devrait se prononcer à ce sujet prochainement. z Les vice-présidences VPPL et VPAI travaillent de concert sur un projet de data center. z De nouveaux collaborateurs ont été embauchés au DIT: responsable Linux (B. Barras), prestation myPrint (C. Cornaz) et ingénieur sytème Oracle – SAP (G. Héron de Villefosse). G. Favre, chef de projet Infoscience, a été transféré au DIT. z Du côté communications, les fidèles lecteurs du FI le savent bien, le Flash informatique a fait peau neuve début 2010, pour mieux guider le lecteur vers un contenu susceptible de l’intéresser [1] et une campagne de sensibilisation à la sécurité informatique a eu lieu (dans différents médias: FI, Flash, écran Polynex et autres à découvrir). z Le réseau a maintenu un haut taux de disponibilité (99%), notamment grâce à du matériel redondant. Un projet visant à supporter IPv6 en parallèle à IPv4 a démarré. z HPC: les clusters généralistes Mizar et Alcor ont été arrêtés fin 2009, remplacés par une extension à Callisto (financée pour 1/3 par les unités de recherche) et un cluster Vega (qui provient de la Faculté IC). z Stockage: l’infrastructure NAS 2 a été mise en place progressivement (plus d’informations plus loin). z Messagerie: migration vers Exchange 2010 prévue pour l’été
14 flash informatique
z myPrint [2]: novembre 2009, décision de la Direction entérinant le service, mise en production pour tous les étudiants dès mars 2010. Onze multi fonctions sont installées sur le campus. z Poséidon: les fournisseurs choisis sont Apple, HP et Lenovo. z Plan.epfl.ch: une nouvelle version a été mise en production. z Subversion: le service offert par l’Agepoly a été repris par le KIS. z Réparation des imprimantes: depuis le début de l’année le CRI ne répare plus les imprimantes; le but est de favoriser la convergence vers du matériel photocopieur-imprimante intégré à myPrint. Par ailleurs les vieilles imprimantes sont coûteuses du point de vue électricité et consommables. Call-Center: 25 assistants-étudiants (équivalent à quatre emplois à plein temps) assurent un horaire étendu; en 2009, 19000 tickets ont été traités dont 6100 résolus par le Help Desk.
Web2010 N. Meystre a fait le point sur le projet (lire article en page 6).
Service de fichiers NAS2 La présentation faite par A. Boisseau et L. Chaboudez a porté sur l’état des lieux du projet NAS2, qui est une évolution de l’architecture NAS en place au DIT depuis 2005. Le nouveau matériel (EMC) a été installé fin 2009 et la migration sur le nouveau système a duré d’octobre 2009 à février 2010. Les problématiques de migration ont été explicitées, notamment le fait que les identifications des propriétaires des fichiers ont dû être changées (NFS4 utilisant LDAP). Le stockage hiérarchique (HSM) est une nouvelle fonctionnalité. Début mai le service stockage des fichiers individuels sera ouvert (2GB par étudiant. 10GB par collaborateur), le mode mixte (CIFS, NFSv4) sera activé par défaut.
Infoscience G. Favre a fait une démonstration des nouvelles possibilités offertes par Infoscience. Basé sur CDS Invenio, produit open source développé par le CERN, Infoscience [3] est le système d’archives des publications scientifiques de l’EPFL (actuellement elle contient plus de 64000 publications). Une nouvelle version a vu le jour début 2010, avec un outil de soumission d’articles amélioré, une saisie automatique des données si l’article est référencé dans PUBMED, Web of Science ou SCOPUS. L’intégration dans une page Web de laboratoire ou la page people d’un chercheur offre plus de possibilités.
Références [1] Edito, par Jacqueline Dousson, FI1/2010 [2] myPrint, par Catherine Cornaz FI 1/2009 [3] actualites.epfl.ch/newspaper-article?np_id=1678&np_ eid=117&catid=5 n
Comment faire ?
Télérama Francois.Roulet@epfl.ch EPFL - Domaine IT, responsable Apple EPFL
The prepaid Internet telephony panorama Panorama sur la téléphonie à prépaiement par Internet
Dans le sillage de deux articles consacrés à la téléphonie domestique par Internet, VoIP@home*, nous nous proposons de vous présenter une configuration particulièrement élégante, s’appuyant entièrement sur une station téléphonique très perfectionnée. Alors que les adaptateurs analogiques VoIP & sont répandus et bien connus, les stations de base de la gamme Gigaset C47x IP de Siemens sont des appareils DECT & hybrides analogiques et numériques tout-en-un, constituant le meilleur matériel pour débuter dans la téléphonique VoIP. Sa configuration s’effectue via son interface Web conviviale, ou subsidiairement, directement via son combiné sans fil dont l’interface utilisateur est évidemment moins confortable. Côté utilisateur, comme leur nom l’indique, ces stations DECT sont évidemment toutes interopérables avec les équipements DECT/GAP & des autres constructeurs. Vous conserverez alors vos anciens combinés sans fil, même s’ils vous ont été offerts et préfixés par Tele2 (10753), car ces derniers ne sont préfixés que par leur base, alors que les combinés eux-mêmes sont libres. Côté réseau, la particularité de cette station hybride est de gérer parallèlement une connexion RJ-11 sur le réseau analogique commuté PSTN &, et jusqu’à 6 connexions Internet VoIP via la prise Ethernet RJ-45. L’idéal pour assurer une transition en douceur de l’ancien vers le nouveau réseau téléphonique. Ainsi, vous pourrez conserver votre raccordement analogique Swisscom, pendant que vous ferez vos premiers pas en téléphonie sur Internet. Cette station de base étant entièrement découplée du socle-chargeur du combiné, elle peut être aisément détachée, afin de l’installer au plus près de l’infrastructure Internet. Autre caractéristique remarquable de cette station: lorsqu’un numéro d’appelant CID & est reçu, son identité correspondante est aussitôt recherchée dans l’annuaire [tel.search.ch], afin de présenter textuellement le nom de vos interlocuteurs suisses, comme c’est le cas avec les téléphones internes à l’EPFL.
Marche à suivre en 6 étapes Le prérequis est évidemment de disposer d’une connexion Internet, nous ne le détaillerons pas ici. Première étape nécessaire pour exploiter la téléphonie VoIP est évidemment d’ouvrir un compte SIP & auprès d’un opérateur VoIP, après avoir sélectionné le plus avantageux au moyen d’un comparatif sur Internet. Au moment de la rédaction de cet article, l’opérateur le plus attractif est pour la plupart des destinations Rynga, lui-même affilié à la nébuleuse géante germano-luxembourgeoise Betamax/Dellmont, regroupant pas moins de 35 portails sur Internet. Après avoir crédité un montant minimal de 10 euros, vous téléphonerez gratuitement vers tous les numéros fixes nationaux et internationaux, 24/24h et 7/7j, durant 4 mois. Attention, une mystérieuse clause FUP & plafonne en réalité la gratuité à environ 2 heures de communications quotidiennes. Les numéros de mobiles sont bien évidemment eux aussi atteignables, hors de la gratuité, à un tarif quasiment imbattable (14 ct/mn vers tous les mobiles nationaux, 8 ct/mn vers les mobiles européens), qui sera automatiquement débité de votre crédit. Lorsque votre crédit sera entièrement épuisé, et la période de gratuité écoulée, vous ne pourrez alors plus téléphoner, jusqu’à la prochaine recharge, qui renouvellera aussitôt la période de gratuité vers les fixes, valable 4 mois. Dès la période de gratuité échue, même les appels vers les fixes seront débités de votre crédit, à un tarif inférieur à 2 ct/mn vers la Suisse et l’Europe, soit respectivement, 4 et 6 fois moins cher que notre opérateur historique national ! Deuxième étape, préparation de la rupture du cordon ombilical avec notre opérateur historique national. Ouvrir un compte auprès d’un opérateur SIP suisse, tel que Sipcall, Peoplefone ou NetVoIP. Ces opérateurs satisfaisant les exigences de la législation helvétique sont habilités à décerner des numéros nationaux, auxquels vous pourrez être atteints. L’attribution de ces indicatifs (numéros) est généralement soumise à un tarif de location croissant, selon que vous vous contentez d’une zone peu peuplée comme le Jura (032), de votre zone d’habitation (021), ou si possible, préférez conserver (porter) votre ancien numéro analogique. Malheureusement, les tarifs de communication de ces opérateurs nationaux étant moins attractifs que ceux des opérateurs internationaux, il s’avère alors judicieux de séparer les communications entrantes et sortantes, c’est-à-dire de faire transiter tous vos appels sortants par les opérateurs internationaux et de recevoir vos appels via un opérateur national. Soulignons une particularité de certains opérateurs SIP nationaux: les appels
* VoIP@home, deux articles d’exemples pratiques, l’un paru dans le FI6/06: ditwww.epfl.ch/SIC/SA/SPIP/Publications/spip.php?article1173 et l’autre dans le FI10/06: ditwww.epfl.ch/SIC/SA/SPIP/Publications/spip.php?article1214
25 MAI 2010 - N°5
15
Télérama
Connexion aux opérateurs SIP
entre leurs clients sont gratuits, de manière similaire aux appels internes du célèbre opérateur Skype. Ce dernier s’appuyant sur un protocole propriétaire différent de SIP, il n’est pas supporté par la station Gigaset, et c’est pourquoi nous ne l’abordons pas présentement. De surcroît, les tarifs de sa passerelle vers le réseau PSTN, SkypeOut, sont toujours sensiblement plus onéreux, et il ne propose aucune période de gratuité vers les téléphones fixes.
Troisième étape. Reste à ajuster les règles de numérotation, autrement dit l’aiguillage des appels sortants en fonction de leur indicatif pour, par exemple, diriger les appels à destination des numéros 08x0 sur l’opérateur SIP national, car les opérateurs internationaux interdisent d’atteindre les numéros surtaxés (090x) et à coûts partagés (084x ).
dants si leur téléphone supporte le protocole CLIP & , exactement de la même manière que lorsque vous les appeliez par votre ligne analogique ou par votre compte SIP national. La liste de numéros à reconnaître peut être rédigée sur le site Web de l’opérateur SIP international, mais attention, elle ne peut PAS être vérifiée, donc authentifiée. Pour ce faire, il faut impérativement recourir à l’application téléchargeable du même opérateur, et celle-ci n’existe que pour Windows. Heureusement, cette procédure ne doit s’effectuer qu’une fois, lors de l’ouverture initiale du compte SIP international.
Aiguillage des communications sortantes
Quatrième étape, reconnaissance de notre numéro d’appel national SIP par l’opérateur international. Afin que vos correspondants puissent vous reconnaître et vous rappeler, il est souhaitable que vous soyez identifiés même lorsque vous transitez par un opérateur international. Pour des raisons légales, les opérateurs SIP internationaux ne sont pas habilités à décerner de numéros d’appelant suisses, que ce soit en entrée ou en sortie. En revanche, ces mêmes opérateurs sont autorisés, après vérification automatisée, à transmettre le numéro de l’appelant CID que vous enregistrerez dans votre station de base. Ainsi, vous pourrez déclarer le numéro de votre SIP national ou de votre ligne analogique, qui s’affichera chez vos correspon-
16 flash informatique
Vérification des numéros d’appel
Lorsque vous presserez sur le bouton Verify now!, l’automate appellera le numéro indiqué, et vous demandera vocalement de composer sur votre combiné un code à 4 chiffres que l’application dédiée vous présentera. Aussitôt cet échange validé, le numéro déclaré sera considéré par l’opérateur comme authentifié, et il acceptera de le transmettre sur le réseau PSTN. Malheureusement, son état n’est jamais indiqué sur la page Web.
Télérama
Remarque: n’oubliez pas de désactiver l’option Start Rynga when I start Windows dans les réglages de cette application.
Cinquième étape. Si vous avez activé plusieurs numéros d’appel nationaux entrants, il faudra alors les diriger (choisir l’affectation) sur le ou les combinés souhaités.
Maintenant que votre numéro est authentifié par l’opérateur SIP international, vous pouvez enfin le déclarer dans la base Gigaset, pour qu’il s’affiche sur le combiné de votre destinataire, si ce dernier supporte le protocole CLIP.
Sixième étape. Pour ceux qui ne désirent pas conserver leur anonymat, annoncer votre numéro d’appel dans les annuaires téléphoniques suisses, (Directories.ch) et [tel.search.ch]. Cette procédure est entièrement gratuite, et vous pourrez répertorier autant de numéros que vous le souhaitez, excepté pour le second qui n’accepte pas plus de 5 numéros.
Indépendance géographique
Déclaration du numéro d’appelant dans la station Gigaset
Remarque: curieusement, seul le champ Username est réellement transmis par la station Gigaset.
Libre à vous de déclarer et authentifier n’importe quel numéro auquel vous pourrez être appelé, que ce soit votre mobile ou votre bureau.
Si vous êtes en déplacement ou en vacances durant plusieurs jours, dans un lieu disposant évidemment d’une connexion Internet (Ethernet RJ-45), vous pourrez alors emporter votre station Gigaset, et aussitôt rebranchée à la destination, vous conserverez absolument tout votre environnement téléphonique du domicile, à savoir les numéros nationaux auxquels vous demeurez atteignables, et les comptes avantageux en sortie: une réelle téléportation.
Assignation des lignes entrantes vers les combinés
25 MAI 2010 - N°5
17
Télérama
Exemples de configurations VoIP étendues envisageables 1 Six combinés sont individuellement associés à un numéro d’appel SIP distinct: Avantage: chaque combiné est atteignable individuellement par son propre numéro SIP national. Inconvénient: aucun ne bénéficie des tarifs d’appel avantageux des opérateurs SIP internationaux. #1) SIP national 1 #2) SIP national 2
Si vous êtes prêt à vous délocaliser virtuellement, c’est-à-dire changer d’indicatif d’appel, alors votre budget téléphonique annuel se réduira à 45.- CHF/an (3 x 10 €) communications fixes comprises, contre les 300.- CHF/an de l’opérateur historique national, et ce, sans aucune communication ! Evidemment, dans ce comparatif, la location de la ligne Internet n’est pas comprise. Et vous resterez libre de tout contrat ou abonnement, car les comptes SIP, nationaux et internationaux, sont à prépaiement.
Caractéristiques principales de la station Siemens Gigaset C47x IP
#3) SIP national 3 #4) SIP national 4 #5) SIP national 5 #6) SIP national 6
2 Trois paires de combinés sont associées à 3 numéros d’appel nationaux entrants et 3 comptes de sortie SIP internationaux distincts: Avantage: tous les combinés bénéficient des tarifs avantageux des opérateurs SIP internationaux. Inconvénient: seules 3 paires de combinés disposent d’un numéro d’appel SIP national distinct. #1) SIP national 1 #2) SIP international 1 #3) SIP national 2 Paire 1 Paire 2 Paire 3
#4) SIP international 2 #5) SIP national 3 #6) SIP international 3
GLOSSAIRE
Conclusion
&
CID: (Caller IDentification) Identification d’appel, un service disponible dans les systèmes de téléphonie analogique et numérique, et audio sur Internet (VoIP), qui transmet le numéro de l’appelant à l’équipement téléphonique de l’appelé, pendant la sonnerie avant que ce dernier accepte la communication. Remarque: chez France Telecom cette prestation est optionnelle et payante ! CLIP: (Calling Line Identification Presentation) service téléphonique qui fournit à la personne appelée le numéro de la personne appelante. DECT: (Digital Enhanced Cordless Telecommunication): communication sans fil numérique renforcée, est une norme ETSI pour les téléphones sans fil à
18 flash informatique
jusqu’à 6 combinés raccordés sur la même base, jusqu’à 6 connecteurs SIP, jusqu’à 2 communications SIP/VoIP simultanées, recherche inverse instantanée du nom de l’appelant dans l’annuaire [tel.search.ch], z consultation des nouvelles via les flux RSS, directement depuis le combiné, z lecture automatique d’un compte de messagerie POP3. z z z z
Références z wiki.epfl.ch/voip-at-home z Protocole SIP: en.wikipedia.org/Session_Initiation_Protocol z Opérateurs VoIP en Suisse: www.voip-list.com/voip_countries/ voip_providers_switzerland_1.html
z Betamax price comparator: progx.ch/home-voip-prixbetamax-3-1-1.html n
domicile, couramment utilisée à des fins domestiques ou d’entreprise.
dial historique. A son origine, il était commuté par des opératrices, avant d’être automatisé par des relais électromagnétiques.
GAP: (Generic Access Profile): profil d’accès générique (norme ETSI EN 300 444), décrivant un ensemble d’exigences obligatoires pour permettre à toute base fixe conforme DECT d’interagir avec n’importe quel combiné portable conforme DECT, afin de fournir les services téléphoniques essentiels, notamment l’affichage de l’appelant.
SIP: (Session Initiation Protocol) : protocole d’initiation de session; c’est un protocole de signalisation défini par l’IETF, largement utilisé pour le contrôle de sessions de communication multimédias, telles que les appels audio et vidéo sur Internet.
FUP: (Fair Use Policy): politique d’utilisation équitable, mystérieuse clause de Betamax restreignant la durée quotidienne de gratuité des communications, sans pour autant en spécifier les conditions exactes.
VoIP (Voice over Internet Protocol) : voix sur IP désigne les technologies qui permettent de numériser la voix et de la transporter sur le réseau informatique d’une entreprise (LAN-WAN) ou sur Internet, grâce au protocole IP.
PSTN: (Public Switched Telephone Network): réseau téléphonique public commuté: le réseau téléphonique mon-
Analyse
GPU, environnements de programmation CUDA Francis.Lapique@epfl.ch EPFL Domaine IT, évangéliste CUDA
This article is intended for people interested in GPU computing. The new NVDIA Fermi-GTX 470/480 cards having arrived, our purpose here is to examine the latest CUDA developments. Cet article s’adresse aux lecteurs évoluant dans le monde du calcul GPU &. Avec la sortie des nouvelles cartes NVIDIA Fermi - GTX 470/480, le but ici est de faire le point sur les derniers développements autour de CUDA.
Introduction J’invite le lecteur que le sujet intéresse, mais qui n’a pas de connaissance des architectures des cartes NVIDIA et du modèle de programmation CUDA à lire le livre de NVIDIA et de l’Université de l’Illinois 1 paru en début ce cette d’année ou à se reporter à une introduction du sujet dans le FI8/09 2. Le calcul GPU prend une place de plus en plus importante face au calcul CPU. Au moins deux bonnes raisons pour comprendre ce phénomène relativement récent: les GPU offrent, au niveau applicatif, une bande passante mémoire bien supérieure à celle des CPU et livre, à consommation d’énergie égale, plus de performance calcul. Quelques annonces prises en vrac: z Outils CULA: LAPACK sur les GPU CUDA, développé par EM Photonics z MAGMA: LAPACK sur les GPU CUDA et les CPU multi-cœurs, développé par le groupe de recherche de Jack Dongarra z GPULib: bibliothèque de fonctions mathématiques pour IDL et MATLAB z Bibliothèque de GPU VSIPL (Vector Signal Image Processing Library) z OpenCurrent: bibliothèque open-source pour les solveurs d’équations PDE (équations différentielles partielles) accélérés par CUDA sur les grilles régulières z Compilateur d’auto-parallélisation de PGI pour Fortran et C vers CUDA C z Compilateur d’auto-parallélisation de CAPS HMPP pour C et Fortran vers CUDA C z Solveurs PDE Lattice Boltzmann (LBM) sur GPU z PyCUDA: wrapper CUDA pour Python z Thrust: bibliothèque de modèles C++ pour CUDA z R/gputools: ensemble de modules optimisés CUDA (...gpuMatMult gpuMi gpuQr gpuSolve gpuSvd gpuSvmPredict ....)
z Support d’Eclipse pour CUDA z NVIDIA Parallel Nsight. On ne pourra pas aborder dans le cadre de cet article tous les points de cette liste. Débutons par le dernier, la sortie de NVIDIA Parallel Nsight, ensuite nous parlerons de PyCUDA, de CUDA et LAPACK et de Thrust (C++ et CUDA).
NVIDIA Parallel Nsight C’est sans doute l’événement le plus important, car c’est celui qui va connaître auprès des communautés de développement autour des GPU l’impact le plus grand. NVIDIA Parallel Nsight (précédemment connu sous le nom de Nexus) est un environnement de développement pour la programmation d’applications GPU intégré dans Visual Studio 2008 (Windows 7, 32 ou 64-bit). Cet environnement est ce qui se fait de mieux pour tous celles et ceux qui ont ou auront à programmer des GPU dans un contexte de projet graphique ou de calcul haute performance. Nsight Debugger/Analyzer cible le débogage et l’analyse du code source CUDA C/C++ donc plutôt l’aspect calcul, Nsight Graphics Inspector capture en temps réel des frames Direct3D donc plutôt l’aspect graphique. Nous allons voir quelques exemples dans le domaine du calcul. Dans la terminologie Nsight il faut faire la distinction entre la machine dite Host qui va héberger votre session Visual Studio et la machine dite Target qui va exécuter le code CUDA. Host et Target peuvent se résumer à une seule machine, mais session et exécution ne peuvent cohabiter sur la même carte GPU. La distinction se fait à l’installation en portant l’extension Nsight sur Host et un programme Monitor sur Target. Host et Target communiquent via le réseau (fig-1).
fig. 1
Que fait Nsight ? Dans une version standard un code kernel.cu est compilé par le programme nvcc de l’environnement de développement CUDA. Dans le contexte Nsight on fait référence à un autre programme C:\Program Files\NVIDIA Nexus 1.0\ CUDA Toolkit\v3.0\Win64\CUDA\bin64\nvcc.exe (cas d’une
Programming Massively Parallel Processors: A Hands-on Approach David B. Kirk, Wen-mei W. Hwu Les GPU ne sont pas uniquement faits pour les consoles de jeux du FI 2/2009
1 2
25 MAI 2010 - N°5
19
GPU, environnements de programmation CUDA machine 64 bits) qui va préparer un exécutable pour Visual Studio. Le répertoire v3.0 signale l’utilisation de la dernière version de développement CUDA 3.0. Avant tout chose, vous devez vous assurer de la bonne configuration de votre projet. Pour la check-list complète, il faut se reporter à la rubrique How To: Work With Samples du guide utilisateur. On peut citer deux ou trois petites choses: vérifier les règles pour l’extension .cu, les propriétés du projet, le chemin d’accès de nvcc. Vous pouvez alors lancer la commande Build, vous avez un compte-rendu dans la fenêtre Output
sous-matrice ? Rien de plus simple, ouvrons une fenêtre watch1 (Debug->Windows) et glissons l’expression a + wA * ty + tx dans cette fenêtre pour l’évaluer.
1>matrixMul - 0 error(s), 1 warning(s) == Rebuild All: 1 succeeded, 0 failed, 0 skipped ==
Une dernière chose avant de commencer, il faut préciser l’adresse de la machine Target. Sous la rubrique Nexus User Properties on trouve une sous-rubrique Connection Name où vous indiquez l’IP de cette machine. Lancez le programme Monitor sur la machine Target, donnez un point d’arrêt dans votre code, vous pouvez alors passer la commande Start CUDA Debugging sous le menu Nexus. Si la communication entre Target et Host se passe bien le programme s’arrête, dans le cadre de cet exemple, sur l’instruction int tx = threadIdx.x (fig. 2). En pointant tx vous affichez sa valeur. Suivant le modèle de programmation CUDA, un kernel s’exécute sur une grille de blocks eux-mêmes comptant un certain nombre de threads.
fig. 3
Bien, qu’en est-il des contenus mémoire de la matrice A et sousmatrice As en shared memory. On retourne dans le sous-menu Windows pour ouvrir deux fenêtres Memory. Dans l’une, celle du haut, on affiche A dans l’autre As. N’ayant pas atteint l’instruction __syncthreads() nous n’avons qu’une partie de As (fig. 4). On peut vérifier le chargement complet de As quand on exécute l’instruction de synchronisation.
fig. 2
Si vous vous intéressez à un index de blocks et threads particuliers, allez dans le sous-menu Cuda Focus Picker et précisez votre choix (fig. 3). Prenons l’exemple d’un produit de matrices (voir la version de l’article en ligne pour le code). Dans cet exemple on travaille sur une grille de blocks de 8 par 5 et de 16 par 16 de threads par blocks. Mettons-nous dans la peau du thread 0,0 du block 1,0. Pour ce faire on va dans le sousmenu Cuda Focus Picker et on précise notre choix. En cliquant l’icône Step Over pour passer aux instructions suivantes nous arrivons à un passage comme AS(ty, tx) = A[a + wA * ty + tx] où la matrice A est découpée en sous-matrices dans les espaces de shared memory &. Ce que nous voudrions savoir: le thread que nous venons de mettre sous surveillance charge-t-il la bonne
20 flash informatique
fig. 4
Il est possible de demander un point d’arrêt sur une adresse. Dans le sous-menu New Breakpoint de Debug choisir l’option New Data Breakpoint et rentrer une adresse comme &C[0] pour cet exemple. Si on demande la poursuite de l’exécution, on atteint notre nouveau point (fig. 5).
GPU, environnements de programmation CUDA
fig. 8
Signalons que l’on trouve également dans ce compte-rendu une vue de l’API CALL (fig. 9).
fig. 5
Une interrogation qui revient souvent quand on développe une application GPU/CUDA les accès mémoire sont-ils coalescents &? Si ce n’est pas le cas, il faut revoir le code car on se dirige vers des problèmes de performance plus ou moins graves. Pour aborder cette question, il faut passer à un autre aspect du débogage, l’analyse d’activité. Choisir à partir du menu Nexus le sous-menu New Analysis Activity.
fig. 9
fig. 6
Un dernier aspect, la résolution de problème de violation de mémoire, introduisant dans la source un bug. On active Enable CUDA Memory Checker et on lance l’application. L’application bloque sur le problème et nous indique qu’il a lieu avec le thread (8,15,0) du block (0,4,0) (fig. 10).
On a coché la case Profile CUDA (fig. 6) et demandé la surveillance des accès non coalescents sur la mémoire globale. Lançons le processus, le résultat est un compte-rendu assez détaillé (fig. 7).
fig. 10
fig. 7
En cliquant All sous la rubrique Top Kernels by Time nous avons notre renseignement (fig. 8).
Vous pouvez également aborder les problèmes de divergence de branchement à savoir quand les threads d’un même warp explorent des chemins différents du fait de la présence d’un if-else. En demandant la fenêtre CUDA Device Summary on a une vue sur l’activité des Warps ( groupement de 32 threads). Dans cet exemple nous travaillons sur des blocks de 256 threads on retrouve les 8 warps numérotés de 0 à 7. Ce qui est intéressant c’est 25 MAI 2010 - N°5
21
GPU, environnements de programmation CUDA le mask de 32 bits (1 thread actif 0 thread inactif ) pour connaître le degré de divergence (fig. 11).
Le code est compilé puis chargé sur le device. La méthode get_ permet d’appeler ce kernel par son nom. On lui donne deux arguments: la matrice et la taille de block 4x4 (par défaut la grille est de 1x1). function
func = mod.get_function("doublify") func(a_gpu, block=(4,4,1))
C’est fini on récupère les données sur le host: a_doubled = numpy.empty_like(a) cuda.memcpy_dtoh(a_doubled, a_gpu)
fig. 11
Nous n’avons abordé que quelques aspects de cet environnment car le format papier n’est pas le format idéal pour présenter ce genre d’outil, mais insistons sur le fait que c’est un outil majeur pour développer et optimiser des applications massivement parallèles sur GPU. Passons à un autre point de la liste: la communauté Python et les GPU.
PyCUDA Pour celles et ceux acquis au langage Python, PyCUDA offre un wrapper CUDA. C’est un environnement idéal pour le prototypage d’applications, car vous allez travailler dans un environnement interprété. Les choses se passent ainsi: Dans un premier temps, comme pour n’importe quel module, on commence par les import pour l’utilisation de PyCUDA (c’est le moment décisif qui valide ou invalide votre installation....) import pycuda.driver as cuda import pycuda.autoinit from pycuda.compiler import SourceModule
On va travailler dans cet exemple sur une matrice 4x4 en simple précision. On importe numpy, qui est le package fondamental pour toute application numérique en Python: import numpy a = numpy.random.randn(4,4) a = a.astype(numpy.float32)
On fait l’allocation mémoire sur le GPU et on transfère la matrice sur le device: a_gpu = cuda.mem_alloc(a.nbytes) cuda.memcpy_htod(a_gpu, a)
Le kernel est un code CUDA C. On donne ce source au constructeur pycuda.compiler.SourceModule. Ce kernel, qui porte le nom doublify , double chacune des valeurs de la matrice: mod = SourceModule(""" __global__ void doublify(float *a) { int idx = threadIdx.x + threadIdx.y*4; a[idx] *= 2; } """)
Pour la suite il faut se reporter à la page d’ Andreas Klöckner de Brown University qui conduit ce projet très intéressant. Passons du domaine académique au domaine commercial. mathema.tician.de/software/pycuda.
CUDA et LAPACK: CULA EM Photonics propose des versions optimisées de LAPACK &. La version dite Basic est gratuite mais elle est en simple précision et se limite à 6 fonctions (SGESV SGETRF SGEQRF SGELS SGGLSE SGESVD). La version payante dite Premium est un port complet de LAPACK. Si vous envisagez une migration, il faut se référer au guide de programmation qui signale les différences d’approche comme le passage par valeur/référence, le rangement orienté ligne/colonne. // CULA culaStatus s; s = culaSgesvd(’O’, ’N’, m, m, a, lda, s, u, ldu, vt, ldvt); // Traditional char jobu = ’O’; char jobvt = ’N’; int info; sgesvd(&jobu, &jobvt, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, &info);
La parallélisation sur plusieurs GPU est, pour le moment, manuelle. Voici un squelette de programation d’une factorisation QR &. Dans le programme principal on va: z demander le nombre de devices du système status = culaGetDeviceCount(&numDevices); numThreads = numDevices;
z allouer les structures de données qui vont contenir threads et arguments threads = (ThreadHandle*)malloc(numThreads*sizeof( ThreadHandle)); args = (ThreadArgs*)malloc(numThreads*sizeof(Threa dArgs));
z lancer les éxécutions des threads for(i = 0; i < numThreads; ++i) { args[i].id = i; args[i].gpu = i % numDevices; args[i].ret = 0; pthread_create(&threads[i], NULL, threadRoutine, &args[i]); }
z attendre pthread_join(threads[i], NULL);
22 flash informatique
GPU, environnements de programmation CUDA Pour chacun des threads on va: z attacher un GPU status = culaSelectDevice(args->gpu); Initialiser CULA status = culaInitialize();
z appeler culaSgeqrf status = culaSgeqrf(M, N, A, M, TAU);
z quitter CULA culaShutdown(); args->ret = EXIT_SUCCESS;
À titre indicatif voici les résultats de benchmark pour un board Intel® DX48BT2/4GB avec cartes GTX 280: Initializing CULA... Initializing MKL... Benchmarking the following functions: SGEQRF SGETRF SGELS SGGLSE SGESV SGESVD -------------------------------------- SGEQRF Benchmark -Size CULA (s) MKL (s) Speedup ------ ---------- ---------- --------4096 0.52 2.45 4.6977 5120 0.94 4.58 4.8670 6144 1.55 7.83 5.0615 7168 2.37 12.25 5.1783 8192 2.50 18.32 7.3315 -- SGETRF Benchmark -Size CULA (s) MKL (s) Speedup ------ ---------- ---------- --------4096 0.27 1.38 5.1559 5120 0.45 2.56 5.6540 6144 0.71 4.20 5.9301 7168 1.05 6.52 6.2190 8192 1.48 9.65 6.5172 -- SGELS Benchmark -Size CULA (s) MKL (s) Speedup ------ ---------- ---------- --------4096 0.74 2.64 3.5537 5120 1.28 4.96 3.8793 6144 2.02 8.31 4.1161 7168 3.00 13.15 4.3880 8192 3.30 19.12 5.7886 -- SGGLSE Benchmark -Size CULA (s) MKL (s) Speedup ------ ---------- ---------- --------4096 0.82 6.01 7.3081 5120 1.39 10.24 7.3508 6144 2.20 16.01 7.2857 7168 3.19 23.41 7.3314 8192 3.56 33.00 9.2646 -- SGESV Benchmark -Size CULA (s) MKL (s) Speedup ------ ---------- ---------- --------4096 0.33 1.40 4.2376 5120 0.53 2.59 4.9100 6144 0.80 4.23 5.3061 7168 1.15 6.55 5.6845 8192 1.60 9.72 6.0610 -- SGESVD Benchmark -Size CULA (s) MKL (s) Speedup ------ ---------- ---------- --------4096 44.61 208.25 4.6678 5120 49.95 350.64 7.0198 6144 76.12 517.99 6.8048 7168 110.90 820.13 7.3950 8192 154.44 1129.61 7.3144
C++ et CUDA: Thrust Comme ce titre le laisse entendre Thrust est le pendant de PyCUDA pour les programmeurs de C++. Cette bibliothèque à l’image de la STL & fournit un ensemble de classes de conteneurs telles
que host_vector<T> ou device_vector<T> et d’algorithmes comme reduce() ou inclusive_scan(). L’installation est des plus simples puisqu’elle se résume à déposer un répertoire d’include. C’est un environnement conseillé pour prototyper des applications complexes si vous avez une bonne pratique de la STL. Passons rapidement en revue quelques aspects caractéristiques de cette bibliothèque. Les appels aux fonctions cudaMalloc et cudaMemcpy ont été masqués. Les codes gagnent en lisibilité comme le montrent ces quelques lignes: // allocate host vector with two elements thrust::host_vector<int> h_vec(2); // copy host vector to device thrust::device_vector<int> d_vec = h_vec; // manipulate device values from the host d_vec[0] = 13; d_vec[1] = 27; std::cout << "sum: " << d_vec[0] + d_vec[1] << std::endl; host_vector désigne les vecteurs stockés sur CPU, device_vector
les vecteurs stockés sur GPU.
On trouve également un ensemble d’itérateurs. Citons le zip_ iterator qui permet de construire à peu de frais des structures de données qui ne sont pas naturelles dans CUDA comme des n-uplet "tuple" // initialize vectors device_vector<int> A(3); device_vector<char> B(3); A[0] = 10; A[1] = 20; A[2] = 30; B[0] = ’x’; B[1] = ’y’; B[2] = ’z’; // create iterator (type omitted) first = make_zip_iterator(make_tuple(A.begin(), B.begin())); last = make_zip_iterator(make_tuple(A.end(), B.end())); first[0] // returns tuple(10, ’x’)
On réduit ces données à la valeur du tuple maximum. // maximum of [first, last] maximum< tuple<int,char> > binary_op; reduce(first, last, first[0], binary_op); // returns tuple(30, ’z’)
Calculer la norme d’un vecteur en Thrust c’est réduire les éléments d’un vecteur à une somme dont les éléments ont été élevés au carré ce qui s’écrit de façon relativement formelle comme: sqrt( transform_reduce(A.begin(), A.end(), unary_ op, init, binary_op) )
On a défini une fonction square avec une surcharge l’opérateur (): struct square { __host__ __device__ float operator()(float x) { return x * x; } };
et les arguments de l’algorithme étant:
transform_reduce
comme
square unary_op; plus<float> binary_op; float init = 0;
25 MAI 2010 - N°5
23
GPU, environnements de programmation CUDA
Conclusion Ce panorama est loin d’être complet et nous ferons un second point après la conférence GPU Technology Conference (GTC 2010) qui se tiendra fin septembre. La soumission pour cette conférence vient de s’ouvrir et j’invite tous les membres de la communauté GPU de l’EPFL à participer.
GLOSSAIRE
&
coalescence: action de fusionner 2 blocs de mémoire libre adjacents. GPU (Graphics Processing Unit): ce type de processeur graphique, issu du monde des jeux vidéos, est utilisé à présent pour le calcul scientifique, apprécié pour sa structure hautement parallèle.
Nous sommes en cours d’évaluation de la consommation électrique par GigaFlops calculé sur des différentes cartes NVIDIA en vue d’évaluer si on peut atteindre le 1 Joule/GFlops sur ces architectures. n
LAPACK (Linear Algebra PACKage): bibliothèque logicielle dédiée à la simulation numérique, très utilisée pour tester les performances (benchmark) d’un processeur pour le calcul numérique QR: une des méthodes les plus utilisées en algèbre linéaire pour décomposer une matrice.
shared memory ou mémoire partagée désigne un large bloc de mémoire vive qui est accédé par différentes unités de calcul au sein d’un ordinateur parallèle. STL (Standard Template Library): cette bibliothèque est un ensemble d’objets et de méthodes standards pour le C++; le code C++ normalisé pour certains objets classiques, garantissant un code source lisible, facilement réutilisable.
Actualités
https://secure-it.epfl.ch cinquième épisode
Antivirus à la maison Antivirus at home
N’oubliez pas de protéger aussi vos ordinateurs privés contre les virus.
Don’t forget to protect also your private computers against viruses.
ISSN 1420-7192