Nouvelles du Libre

Prix Ig Nobel de 2011 à 2014

Linuxfr - il y a 2 heures 46 min

Les prix Ig Nobel (jeu de mot sur ignoble et Nobel) 2014 ont été attribués le 18 septembre dernier. Rappelons qu’ils récompensent des publications ou des travaux scientifiques qui font des recherches inusuelles et imaginatives. Les vainqueurs ont tous fait des choses qui ont d’abord fait rire, puis réfléchir les gens.

Liste des prix 2014 :
  • nutrition : la caractérisation d'une bactérie liée à l'acide lactique, isolée depuis les selles d'un enfant, comme démarreur de culture probiotique pour saucisses fermentées ;
  • psychologie : les couche-tard plus égocentriques, manipulateurs et psychopathes que les couche-tôt ;
  • santé publique : les risques mentaux d'avoir un chat ;
  • médecine : le traitement des saignements de nez incontrôlés par la tranche de porc ;
  • science arctique : la réaction des rennes face à des humains déguisés en ours polaires ;
  • biologie : l'alignement nord-sud des chiens durant la défécation et la miction ;
  • physique : étude des frictions lorsque l'on marche sur une peau de banane ;
  • art : la différence de souffrance à regarder une mauvaise peinture par rapport à une belle peinture, lorsque l'on est pointé par un laser puissant ;
  • économie : la croissance de l'économie nationale en prenant en compte la prostitution, les ventes de drogues, la contrebande et autres transactions financières illégales ;
  • neuroscience : ce qui se passe dans votre cerveau lorsque vous voyez un toast avec un visage de Jésus dessus.
D’abord faire rire puis réfléchir les gens ?

On rappellera, comme l’avait fait Malicia en 2010, que « Andre Geim a été récompensé par le Prix Nobel de Physique 2010 (avec Konstantin Novoselov) après avoir eu une récompense Ig Nobel en 2000 (avec Sir Michael Berry), pour avoir fait léviter une grenouille avec des aimants ». On peut aussi citer le professeur Keller qui a reçu deux prix Ig Nobel en physique en 1999 et en 2012.

Historique

Ces prix sont évoqués depuis plusieurs années sur LinuxFr.org (2001, 2002, 2004, 2005, 2006, 2008, 2010, 2011).

Et puis, ça change des Prix FSF du logiciel libre (Awards for the Advancement of Free Software) (2001 et 2001, 2005, 2008, 2013, etc.), ou même des plus pessimistes Big Brother Awards (2000, 2001 et 2001, 2002, 2003, 2005, 2007, 2009, 2010, 2012 Belgique, 2013, etc.) ou Darwin Awards.

Et en bonus,

comme ça serait dommage d'avoir manqué des avancées scientifiques notables, voici le palmarès Ig Nobel depuis la dépêche précédente :

2013
  • médecine : l'écoute de l'opéra durant la transplantation cardiaque chez les souris ;
  • psychologie : la confirmation que les personnes saoules se pensent séduisantes ;
  • astronomie et biologie : la réorientation des coccinelles perdues par l'observation de la Voie lactée ;
  • ingénierie sûre : la capture et le parachutage automatique de pirates aériens en vol ;
  • physique : la possibilité pour certaines personnes de courir à la surface d'une mare, sur la Lune ;
  • chimie : la complexité inattendue des processus biochimiques entraînant les larmes lors de l'épluchage d'oignons ;
  • archéologie : la cuisson et l'ingurgitation sans mâcher d'une musaraigne et l'étude des selles les jours suivant ;
  • paix : le président du Belarus Alexander Lukashenko pour avoir rendu les applaudissements en public illégal et la police d'État Belarus pour avoir arrêté un manchot pour applaudissement ;
  • probabilité : plus une vache est restée longtemps couchée, plus il est probable qu'elle se lève, et ensuite il est impossible de savoir quand elle va se recoucher ;
  • santé publique : la chirurgie lors de l'épidémie d'amputations de pénis au Siam, sauf dans les cas d'ingurgitation par un canard ;
2012
  • psychologie : se pencher vers la gauche rend la Tour Eiffel plus petite ;
  • paix : l'entreprise russe SKN qui convertit des anciennes munitions en diamants ;
  • acoustique : le brouilleur de communication SpeechJammer, qui vous répète vos paroles avec un délai ;
  • neuroscience : les neuro-chercheurs peuvent mesurer l'activité du cerveau, même sur un saumon mort ;
  • chimie : la solution de l'énigme du pourquoi à Anderslöv en Suède certains cheveux sont devenus verts ;
  • littérature : la « Cour des comptes » (GAO) américaine pour la publication d'un rapport sur les rapports concernant les rapports recommandant l'écriture d'un rapport sur le rapport sur les rapports à propos des rapports ;
  • physique : le calcul de l'équilibre des forces qui s'applique sur une coupe queue de cheval ;
  • dynamique des fluides : la tasse de café durant la marche ;
  • anatomie : l'identification entre chimpanzés en voyant des photos de leur postérieur ;
  • médecine : comment aider les médecins à limiter l'explosion des patients durant la coloscopie.
2011
  • psychologie :
    • l'absence de preuve de la contagion du bâillement chez la tortue charbonnière à pattes rouges ;
    • pourquoi les gens soupirent dans la vie de tous les jours ;
  • chimie : la densité idéale de wasabi aéroporté pour réveiller les gens en cas de feu ou d'urgence ;
  • médecine : la démonstration que les gens prennent des décisions meilleures concernant certaines choses et d'autres plus mauvaises, lorsqu'elles sont pressées d'uriner ;
  • littérature : la théorie de la procrastination structurée ;
  • biologie : le rapprochement de certaines coccinelles avec certaines bouteilles de bières australiennes ;
  • physique : pourquoi les lanceurs de disque deviennent étourdis alors que les lanceurs de marteaux non ;
  • mathématiques : la prédiction de la fin du monde en 1954, 1982, 1990, 1992, 1994, 1999 et 2011 ;
  • paix : le maire de Vilnius pour le traitement du stationnement illégal de voitures de luxe par l'écrasement au véhicule blindé ;
  • santé publique : la conduite sur autoroute lors d'aveuglements.
Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

webOS se relance en LuneOS

Linuxfr - sam, 20/09/2014 - 18:23

webOS (avec un "web" minuscule et un "OS" majuscule), après avoir été créé par Palm, racheté par HP, revendu à LG, renommé en Open webOS, se nomme désormais LuneOS. Plus précisément, il s'agit du renommage du projet « WebOS Ports Open webOS ».

Le projet LuneOS

Pourquoi "Lune" ? C'est le français de LunaSysMgr, le system manager, qui présente les applications en cours sous forme de cartes que l'on peut jeter par un balayage vers le haut pour les tuer.

Cette première version, nommée "Affogato", vise principalement des personnes intéressées à participer au développement du système. En effet, après avoir effectué un gros travail de fond pour se baser sur des technologies plus récentes (Qt 5.2, systemd, Wayland, nouvelle interface LunaNext utilisant QtQuick…), l'accent est mis sur le développement d'applications.

Il faut noter cependant que le but n'est pas de concurrencer Android ou iOS, mais bien de faire revivre sur d'autres appareils mobiles cette expérience unique qu'était webOS. Le projet se construit autour du logiciel libre et de sa communauté, et son développement peut être suivi sur Github et sur IRC (#webos-ports sur Freenode).

Nouveautés depuis la dernière release (Alpha 2, en juin 2013)

Beaucoup de choses ont changé en un an. Voici une liste de quelques-uns de ces changements, donnant une idée du chemin accompli.

Améliorations du cœur du système
  • Réécriture avec QtQuick 2 et Qt 5.2 du compositeur de fenêtres : le gestionnaire de « cartes » LunaSysMgr est remplacé par LunaNext pour la partie graphique, tandis que la partie « infrastructure» de LunaSysMgr a été conservée pour éviter les réécritures inutiles de code.

  • Utilisation de la bibliothèque libhybris pour faciliter le portage de l'OS sur des appareils Android ; les éléments suivants d'Android sont actuellement réutilisés :

    • Système de téléphonie (rild)
    • Pilotes graphiques
  • Il est prévu d'utiliser plus d'éléments encore d'Android via libhybris :

    • Accélération matérielle vidéo et audio
    • Intégration des capteurs
    • Capture photo
  • Il n'est actuellement pas prévu de faire tourner des applications Android dans LuneOS (via par exemple ACL ou AndroidChroot)

  • Utilisation de systemd comme système d'init à la place d'Upstart, permettant de raccourcir le temps de démarrage et de mieux contrôler les différentes tâches de l'init

  • Pour les tests et le développement, une image compilée pour VirtualBox est disponible

  • Tout est construit par la communauté (Système de compilation OpenEmbedded)

Améliorations des applications
  • Preware 2 est maintenant fonctionnel et permet l'installation d'applications additionnelles
  • Corrections de bugs dans les applications Memo, Calculator et Email
  • Une nouvelle application PDF a été créée, basée sur l'implémentation de PDF.js de Mozilla
  • Un gestionnaire de fichiers basique est disponible
  • Un mécanisme de mise à jour a été mis en place pour permettre de passer facilement à une version plus récente de LuneOS
Comment l'essayer ?

Les Nexus 4 et HP TouchPad sont pleinement pris en charge, tandis que les Galaxy Nexus et Nexus 7 (2012 Wifi) sont pris en charge par Affogato, mais ne seront pas activement maintenus à l'avenir.

Les appareils éligibles à un portage sont ceux qui peuvent faire tourner Android 4.2.2, dont une partie des pilotes est réutilisée via la bibliothèque libhybris pour fournir la prise en charge du matériel, indispensable à son fonctionnement.

Pour ceux qui ne possèdent aucun de ces appareils mais qui souhaiteraient quand même essayer LuneOS, une image pour VirtualBox est également disponible.

La suite

LuneOS est un projet vaste, porté actuellement par un groupe assez réduit de développeurs. Sur de nombreux sujet, les contributions sont donc évidemment les bienvenues, notamment au niveau des applications.

Le projet prévoit maintenant de publier des versions de façon régulière (une version par mois environ), sous forme de rolling release.

Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

Le Capitole du Libre, jusqu'au dimanche 21 septembre pour proposer votre participation !

Linuxfr - ven, 19/09/2014 - 23:56

Vous le savez sûrement, le Capitole du Libre 2014 aura lieu les samedi 15 et dimanche 16 novembre prochains.

Le Capitole du Libre est l'événement du Libre à Toulouse ; il accueille cette année notamment Adrienne Charmet de La Quadrature du Net, Lionel Maurel juriste et bibliothécaire, et Benjamin Bayart de FFDN. Il y aura également Pierre Ficheux d'Open Wide, auteur du livre Linux Embarqué et Christophe Blaess, ingénieur indépendant qui aide régulièrement à la conception de systèmes Linux embarqués ou nécessitant des contraintes temps réel fortes.

Des conférences et ateliers sont proposés au travers de diverses thématiques telles que les enjeux du Libre, le Multimédia, Internet Libre, la Bureautique, l'Embarqué et DevOps.

Le Capitole du Libre accueille également deux événements hébergés :

  • la communauté LibreOffice pour un Hackfest ;
  • la communauté KDE au travers d'Akademy-FR.

Il ne reste que quelques jours pour proposer une conférence ou un atelier à cet événement. Alors n'hésitez pas.

Thématiques de conférences et ateliers

Cette année les thèmes abordés seront :

  • Grand Public et Enjeux du Libre (découverte, éducation, juridique, biens communs…) ;
  • Technique (système, développement, réseau…) ;
  • Multimédia & Bureautique (graphisme, vidéo, son, ainsi que les logiciels de bureau) ;
  • Internet Libre (outils libre pour l'auto-hébergement de site, de mail…) ;
  • Open Hardware et Embarqué (Arduino, Raspberry Pi…) ;
  • DevOps (déploiement et intégration automatisée).

Les propositions sont encore ouvertes jusqu'au 21 septembre à minuit. Nous remercions celles et ceux qui ont déjà proposé leur participation, ils seront notifiés de notre décision la semaine du 22 septembre au plus tard.

Événements hébergés LibreOffice Hackfest

Dans un Hackfest, les contributeurs se réunissent afin de coordonner dans un temps donné et dans une atmosphère détendue, le développement du produit et faire avancer le projet.

Akademy-FR

Événement français de la communauté KDE, l'objectif est de permettre aux contributeurs francophones de se retrouver, mais également de promouvoir les produits de la communauté à l'échelle française.

Pour les novices, c'est l'occasion rêvée de découvrir cet environnement libre et complet. Pour les personnes souhaitant contribuer, elles pourront rencontrer des contributeurs d'horizons divers qui les aideront à se lancer dans le grand bain KDE. Vous retrouverez donc à la fois des conférences orientées contribution mais également grand public.

Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

Atelier framebuffer à Bordeaux le 29 septembre 2014

Linuxfr - ven, 19/09/2014 - 14:40

Le lundi 29 septembre 2014 se tiendra le deuxième atelier CLI dont le thème porte sur le framebuffer.

Le but de ces ateliers, proposés par des membres d’associations et collectifs Bordelais, est de progresser ensemble autour d'un outil ou d'un thème, toujours en ligne de commande. Les ateliers de type spécial débutants reprendront le 13 octobre.

Cet atelier se déroulera dans les locaux du L@BX, à la fabrique POLA (Rue Marc Sangnier, 33130 Bègles).

Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

Cartopartie OpenStreetMap pour la Fête du Parc du Verdon - dimanche 28 septembre 2014 à La Verdière

Linuxfr - ven, 19/09/2014 - 10:26

APITUX vous emmène à la découverte de la cartographie libre OpenStreetMap. Venez dessiner avec nous le plan de La Verdière, ses rues et ses chemins, ses places et ses fontaines, ses points d'intérêt et ses services. Un atelier proposé dans le cadre de la Fête du Parc du Verdon, dimanche 28 septembre 2014 de 14h à 17h. Inscription gratuite au 04 92 74 68 00.

OpenStreetMap est une base de données géographique construite de manière collaborative et publiée sous licence libre. Le projet reprend les principes qui ont fait le succès de Wikipédia. La contribution est ouverte à tous, chacun peut cartographier sa commune, son quartier, sa randonnée préférée. La carte du monde se dessine progressivement par l'assemblage de toutes les contributions.

Le Parc naturel régional du Verdon est un territoire de projets qui regroupe 46 communes des Alpes-de-Haute-Provence et du Var. Il compte plus de 30 000 habitants pour une surface de 180 000 hectares. Les missions, les objectifs, l'organisation du Parc font l'objet d'une charte qui fédère les collectivités adhérentes et l'État autour d'un projet concerté de développement durable conclu pour une période de 12 ans.

APITUX est spécialisé dans la formation et le conseil en informatique libre. Il intervient en tant qu'expert auprès des collectivités sur les logiciels libres adaptés à leurs métiers, la mise en place et l'animation de leurs démarches opendata et la cartographie collaborative avec OpenStreetMap.

Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

Aperi’tic logiciel libre en milieu professionnel - jeudi 25 septembre 2014 à Gap

Linuxfr - ven, 19/09/2014 - 10:12

Un Aperi’tic consacré au logiciel libre en milieu professionnel, jeudi 25 septembre 2014 de 10h à 12h à la CCI 05, 16 rue Carnot à Gap.

Né au MIT en 1983, le logiciel libre est aujourd'hui sorti des laboratoires de recherche pour s'établir très largement dans tous les domaines de l'informatique. On trouve des logiciels libres dans les « Box » qui gèrent nos connexions Internet, sur nos ordinateurs personnels et nos postes de travail mais aussi dans nos téléphones et autres objets technologiques qui peuplent notre quotidien. L'histoire du logiciel libre est intimement liée à celle du réseau Internet. Saviez-vous que la majorité des serveurs web fonctionnent avec des logiciels libres ?

Comment fonctionnent les licences de ces logiciels que chacun peut utiliser, copier, étudier et modifier librement en toute légalité ? Quels sont les modèles économiques du logiciel libre ? Quels sont les enjeux dans le cadre d'une utilisation professionnelle ?

D'un point de vue pratique, quels sont les logiciels libres utilisables ? Pour la bureautique ? Pour l'internet et le multimédia ? Pour le travail collaboratif et le partage de données en réseau ? Quel est l'état de l'art en matière de logiciels libres pour la gestion d'entreprise ? Comment s'y prendre pour tirer le meilleur parti de ces solutions ? Telles sont les questions auxquelles répondra Jean-Christophe Becquet, directeur d'APITUX et vice-président de l'April, expert du logiciel libre en milieu professionnel depuis 1997.

Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

Formation, Certification et Technologie Libre

Linuxfr - ven, 19/09/2014 - 08:52

L'Institut de Technologie Libre (ITL) organise sur Perpignan et (bientôt) sur Montpellier une formation menant au Titre Professionnel Concepteur(trice) Développeur(se) Informatique de niveau 2 délivré par le Ministère du Travail, de l'Emploi, de la Formation Professionnelle et du Dialogue social.

L'ITL est agréé par la Direction Régionale des Entreprises, de la concurrence, de la Consommation du Travail et de l'Emploi (Languedoc-Roussillon), pour organiser des sessions de validation pour ce Titre Professionnel.

Dans le cadre de cette formation, l'ITL utilise exclusivement des logiciels libres (e.g. PostgreSQL) et des standards ouverts (e.g. HTML5).

Le programme de formation couvre les trois Certificats de Compétences Professionnelles composant le Titre Professionnel :

  • développer des composants d'interface ;
  • développer la persistance des données ;
  • développer une application n-tiers.

La prochaine session de formation démarre le 21/01/2015 et finit le 19/07/2015, tandis que celle de validation démarre le 27/07/2015 pour une durée de cinq jours.

Comme l'ITL accueille des candidats non informaticiens (en reconversion professionnelle), une préparation (facultative) est organisée. La prochaine session de préparation démarre le 21/10/2014 et finit le 20/01/2015.

L'ITL organise également une session de validation blanche (facultative), laquelle démarre le 20/07/2015 et dure cinq jours. De plus amples informations, un formulaire de demande d'information et un formulaire de candidature figurent sur le site de l'ITL.

Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

Forum PHP 2014, demandez le programme

Toolinux - jeu, 18/09/2014 - 23:40

Le programme du Forum PHP 2014 les 23 et 24 octobre au Beffroi de Montrouge est connu, avec les retours d'expérience de l'Express, lemonde.fr, MaisonsduMonde.com, CCM Benchmark, Bla Bla Car, Arte et VDM.

- Evénements et séminaires
Catégories: Nouvelles du Libre

Journée de conférences dédiées à PostgreSQL et PostGIS le 25 septembre

Toolinux - jeu, 18/09/2014 - 23:12

Pour comprendre de quelle manière PostgreSQL s'impose désormais non seulement comme une alternative à Oracle mais aussi bientôt aux bases de type MongoDB, Dalibo et Oslandia organisent à Paris le 25 septembre 2014 une journée de conférences dédiée à PostgreSQL et PostGIS.

- Evénements et séminaires
Catégories: Nouvelles du Libre

Citrix acquiert Virtual pour sécuriser son offre de virtualisation

Toolinux - jeu, 18/09/2014 - 23:10

Citrix annonce annonce l'acquisition de la start-up Virtual, qui propose actuellement la seule plateforme cloud sur le marché permettant la virtualisation au sein d'environnements iOS et Android.

- Services
Catégories: Nouvelles du Libre

Acronis acquiert nScaled

Toolinux - jeu, 18/09/2014 - 23:09

Acronis a annoncé aujourd'hui l'acquisition de nScaled, fournisseur de solution de reprise d'activité après sinistre en tant que service, basé à San Francisco.

- Logiciels
Catégories: Nouvelles du Libre

72 % des entreprises ne font pas confiance au cloud ?

Toolinux - jeu, 18/09/2014 - 23:05

L'impact économique d'une fuite de données a presque triplé sous l'effet de l'utilisation accrue des services Cloud, un phénomène désigné comme « l'effet multiplicateur du Cloud ».

- Revue de presse
Catégories: Nouvelles du Libre

Orange Madagascar a adopté Talend

Toolinux - jeu, 18/09/2014 - 23:00

Orange Madagascar a retenu Talend Enterprise Data Integration pour industrialiser ses traitements d'intégration de données et analyser ses Big Data.

- Services
Catégories: Nouvelles du Libre

Guide de l'open source, édition 2014

Toolinux - jeu, 18/09/2014 - 23:00

Cette nouvelle édition du Guide recense plus de 350 solutions open source professionnelles, dans près de 50 domaines d'applications pour l'entreprise.

- Revue de presse
Catégories: Nouvelles du Libre

Sortie de Odoo 8 (anciennement OpenERP)

Linuxfr - jeu, 18/09/2014 - 21:11

Odoo, la suite libre d'applications de gestion, vient de sortir sa version 8. Dans les nouvelles fonctionnalités, on retrouve un point de vente fonctionnant aussi sur iPad et Android, un outil de création de site internet, une boutique en ligne, un moteur de rapports statistiques, un système de blogue (clone open source de Medium).

Quelques applications marketing ont également été publiées : envois de mails, une gestion d'événements, un outil de création de sondages et un clone de Stackoverflow (Q&A)

Le cadriciel Python a été totalement réécrit permettant d'être plus efficace pour créer des modules personnalisés.

Toutes les applications de gestion d'Odoo ont été complétées d'une interface frontend (site web). Quelques exemples de fonctionnalités qui sont apparues grâce à la partie web :

  • ventes : une boutique en ligne ;
  • événement : un site web de publication d'événements et vente de tickets ;
  • recrutements : publication des offres d'emploi et formulaires pour postuler ;
  • devis : version en ligne des devis construite sur base de modèles ;
  • composition graphique d'e-mails pour l'envoi massif ;
  • gestion de la relation client : formulaires de contact.

Cette version est le résultat de 18 mois de recherche et développement avec une collaboration efficace entre l'éditeur et la communauté. Une bonne partie des modules communautaires ont d'ailleurs déjà été portés à la nouvelle API.

Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

Numba 0.14

Linuxfr - jeu, 18/09/2014 - 06:47

Numba, l'optimiseur Python spécialisé dans le calcul numérique, est sorti en version 0.14. Numba est un compilateur juste-à-temps (JIT) pour Python, basé sur LLVM, permettant d'optimiser du code de calcul numérique, notamment basé sur Numpy. Il est compatible avec CPython 2.6, 2.7, 3.3 et 3.4. Des paquets binaires sont disponibles via Anaconda, la distribution de paquets binaires dédiée au calcul scientifique maintenue par Continuum Analytics, l'entreprise qui développe Numba.

Sommaire Qu'est-ce que Numba ?

Numba est un compilateur juste à temps pour CPython spécialisé dans l'optimisation de code scientifique.

… CPython ?

CPython est l'implémentation par défaut (ou "de référence", en langage politiquement correct) de Python. Les autres implémentations s'appellent PyPy, Jython, etc.

… Spécialisé ?

Numba ne prétend pas être capable d'optimiser tous les types de code Python, ni même toutes les constructions du langage (même si cela n'est pas exclu comme objectif à long terme). Numba est capable d'optimiser les calculs numériques et scientifiques impliquant des entiers, des flottants, des complexes ; il est capable de reconnaître certaines types de données bien connus, comme les tableaux Numpy.

La liste des fonctionnalités optimisables grandit évidemment de version en version, par exemple la version 0.14 supporte désormais les types numpy.datetime64 et numpy.timedelta64, qui permettent de faire des calculs sur des séries temporelles.

… Juste à temps ?

Numba fonctionne lors de l'exécution de votre code Python. Il suffit d'apposer le décorateur "@numba.jit" à une fonction pour la faire optimiser par Numba (certains aiment prier pour qu'il arrive à l'optimiser). Il n'y a pas de phase de compilation séparée, ni de ligne de commande à lancer.

Plateformes supportées

Numba utilise LLVM, ce qui permet une portabilité relativement aisée. Actuellement, les systèmes sous Linux, OS X et Windows sont supportés. Côté matériel, x86, x86-64 sont supportés et il y a également un backend CUDA (avec des limitations).

Un exemple

Partons de notre ami l'ensemble de Mandelbrot. Pour cela, posons la fonction suivante dans un fichier nommé mandel.py :

import numpy def mandelbrot(width, height): x_min, x_max = -2.0, 1.0 y_min, y_max = -1.0, 1.0 arr = numpy.zeros((height, width), dtype=int) xs = numpy.linspace(x_min, x_max, num=width) ys = numpy.linspace(y_min, y_max, num=height) max_iters = 20 for idx_x, x in enumerate(xs): for idx_y, y in enumerate(ys): c = complex(x, y) z = 0.0j for i in range(max_iters): z = z * z + c if z.real * z.real + z.imag * z.imag >= 4: # Hors de l'ensemble break else: # Dans l'ensemble arr[idx_y, idx_x] = 1 return arr

Cette fonction renvoie un tableau d'entiers Numpy indiquant si un point fait partie de l'ensemble de Mandelbrot (1) ou non (0).

Maintenant, lançons un Python depuis le même répertoire :

>>> import mandel >>> print(mandel.mandelbrot(20, 15)) [[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0] [0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0] [0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0] [0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]

Ouf, ça ressemble :-) Maintenant compilons cette même fonction avec Numba :

>>> from numba import jit >>> opt = jit(mandel.mandelbrot) >>> print(opt(20, 15)) [[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0] [0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0] [0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0] [0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]

Et lançons un benchmark d'une scientificité rigoureuse sur un tableau de 200x200 :

>>> import timeit >>> timeit.timeit("mandel.mandelbrot(200, 200)", setup="import mandel", number=1) 0.20483311700081686 >>> timeit.timeit("opt(200, 200)", setup="from __main__ import opt", number=1) 0.003343598000355996

Sur ce cas d'usage d'une grande importance, Numba est ainsi 60 fois plus rapide que l'interpréteur CPython !

Principe de fonctionnement

Numba est un optimiseur fonction par fonction. Il part de la fonction que vous décorez avec numba.jit et lance une inférence de types pour essayer d'assigner un type précis à chaque variable et valeur intermédiaire dans la fonction. Pour cela, il utilise des règles dédiées à chaque opérateur, fonction standard, etc.

Pour définir les types de départ du processus d'inférence, il y a en réalité deux possibilités :

  • Dans l'utilisation de base de numba.jit, l'utilisateur ne passe pas de paramètres : c'est alors lors de l'appel de la fonction décorée que les types des arguments sont utilisés pour lancer le processus d'inférence (la compilation est ici paresseuse).
  • Dans une utilisation avancée, l'utilisateur peut décrire explicitement les types à l'entrée de la fonction (cela lui permet, par exemple, de choisir des flottants simple précision plutôt que double précision) ; dans ce cas, la compilation a lieu immédiatement.

L'inférence de type est l'étage fondamental qui permet ensuite de produire du code travaillant sur des types bas niveau, plutôt qu'au niveau du modèle objet de Python, qui est beaucoup plus difficile à optimiser. Bien entendu, la chaîne de traitement (pipeline) est constituée de multiples étages :

  1. décodage du bytecode CPython
  2. construction d'un graphe de flot de contrôle (CFG)
  3. génération d'une représentation intermédiaire (IR) spécifique à Numba
  4. inférence de types, produisant une détermination du type de chaque variable manipulée par la fonction
  5. génération de code LLVM correspondant à l'exécution de l'IR sur les types déterminés précédemment
  6. appel à LLVM pour la génération du code machine, et encapsulation du tout dans un objet dédié (wrapper) qui lance le code machine quand il est appelé

Grâce à LLVM, Numba n'a pas à se charger des optimisations bas niveau (propagation de constantes, vectorisation SIMD, etc.) et peut se concentrer sur les traitements spécifiques au langage Python.

Pour une présentation plus détaillée, il convient de lire la documentation (en anglais) : architecture de Numba.

Limitations

À l'heure actuelle, plutôt que de se lancer dans une liste interminable de limitations, il est plus raisonnable de lister ce qui est supporté.

Types supportés
  • les scalaires numériques, que ce soit les types Python (int, float, complex…) ou NumPy (numpy.complex64, etc.)
  • les booléens
  • les dates et intervalles de temps NumPy (numpy.datetime64 et numpy.timedelta64)—mais pas les types standard datetime.datetime et datetime.timedelta
  • les tuples des types ci-dessus
  • les tableaux NumPy des types ci-dessus
Constructions supportées

Numba supporte la plupart des constructions syntaxiques du langage, sauf le traitement des exceptions (try... except, etc.), les gestionnaires de contexte (with), les générateurs (yield) et quelques autres détails.

Fonctions supportées

Numba supporte une grande partie des opérateurs numériques, des fonctions standard (notamment le module math), et certaines fonctions de NumPy. Il est également capable d'optimiser les appels à des fonctions externes via ctypes ou cffi.

Différences sémantiques

Le caractère volontaire (opt-in) de la compilation permet à Numba de présenter des différences sémantiques par rapport au langage Python. Je ne les listerai pas ici, mais une différence évidente a trait aux entiers : les entiers de Python sont de largeur arbitraire, ceux de Numba sont de largeur fixe (déterminée à l'inférence de types, ou forcée par l'utilisateur). Un dépassement lors d'opérations mathématiques entraîne simplement une troncation.

Notons qu'une grande partie de ces différences reflète en réalité le comportement de NumPy (dont les entiers sont aussi à largeur fixe, par exemple).

Numba et l'écosystème Python

Le fait que Numba fonctionne au-dessus de CPython lui permet de s'intégrer facilement à l'écosystème existant. Comme on l'aura compris, l'intégration avec NumPy est également une fonctionnalité de premier plan. D'une manière générale, la stratégie de Continuum (cf. ci-dessous) est de maximiser les possibilités d'interaction entre les multiples briques de calcul scientifique disponibles pour Python.

Statut du projet

Numba est supporté par Continuum Analytics, qui paye à cet effet plusieurs développeurs (dont l'auteur de cette dépêche). Le développement est en partie financé par des clients et des fonds de recherche américains. Nous recevons également des contributions extérieures. Bien entendu, le projet est libre (licence de type MIT).

Contribuer

Numba est un projet jeune auquel manquent de nombreuses fonctionnalités ; il y a donc beaucoup d'opportunités de contribution. Le processus est détaillé dans la documentation. Les compétences nécessaires dépendent de ce à quoi vous vous intéressez :-) La majeure partie du code de Numba est en Python ; il y a quelques parties en C, mais on les évite assez facilement. Nul besoin d'être en expert en NumPy ou en LLVM pour commencer (je ne les connaissais presque pas).

Au débotté, voici quelques directions possibles de contribution, par ordre de difficulté :

  • améliorer la documentation
  • améliorer le retour utilisateur, qui est actuellement assez fruste (messages d'erreur, informations sur la fonction compilée)
  • corriger des bugs (!)
  • ajouter le support de nouvelles fonctions (de la bibliothèque standard ou de NumPy)
  • ajouter le support de nouveaux types
  • ajouter le support de nouvelles constructions (comme la gestion des exceptions ou les générateurs)
Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

Numba 1.4

Linuxfr - jeu, 18/09/2014 - 06:47

Numba, l'optimiseur Python spécialisé dans le calcul numérique, est sorti en version 1.4. Numba est un compilateur juste-à-temps (JIT) pour Python, basé sur LLVM, permettant d'optimiser du code de calcul numérique, notamment basé sur Numpy. Il est compatible avec CPython 2.6, 2.7, 3.3 et 3.4. Des paquets binaires sont disponibles via Anaconda, la distribution de paquets binaires dédiée au calcul scientifique maintenue par Continuum Analytics, l'entreprise qui développe Numba.

Sommaire Qu'est-ce que Numba ?

Numba est un compilateur juste à temps pour CPython spécialisé dans l'optimisation de code scientifique.

… CPython ?

CPython est l'implémentation par défaut (ou "de référence", en langage politiquement correct) de Python. Les autres implémentations s'appellent PyPy, Jython, etc.

… Spécialisé ?

Numba ne prétend pas être capable d'optimiser tous les types de code Python, ni même toutes les constructions du langage (même si cela n'est pas exclu comme objectif à long terme). Numba est capable d'optimiser les calculs numériques et scientifiques impliquant des entiers, des flottants, des complexes ; il est capable de reconnaître certaines types de données bien connus, comme les tableaux Numpy.

La liste des fonctionnalités optimisables grandit évidemment de version en version, par exemple la version 0.14 supporte désormais les types numpy.datetime64 et numpy.timedelta64, qui permettent de faire des calculs sur des séries temporelles.

… Juste à temps ?

Numba fonctionne lors de l'exécution de votre code Python. Il suffit d'apposer le décorateur "@numba.jit" à une fonction pour la faire optimiser par Numba (certains aiment prier pour qu'il arrive à l'optimiser). Il n'y a pas de phase de compilation séparée, ni de ligne de commande à lancer.

Plateformes supportées

Numba utilise LLVM, ce qui permet une portabilité relativement aisée. Actuellement, les systèmes sous Linux, OS X et Windows sont supportés. Côté matériel, x86, x86-64 sont supportés et il y a également un backend CUDA (avec des limitations).

Un exemple

Partons de notre ami l'ensemble de Mandelbrot. Pour cela, posons la fonction suivante dans un fichier nommé mandel.py :

import numpy def mandelbrot(width, height): x_min, x_max = -2.0, 1.0 y_min, y_max = -1.0, 1.0 arr = numpy.zeros((height, width), dtype=int) xs = numpy.linspace(x_min, x_max, num=width) ys = numpy.linspace(y_min, y_max, num=height) max_iters = 20 for idx_x, x in enumerate(xs): for idx_y, y in enumerate(ys): c = complex(x, y) z = 0.0j for i in range(max_iters): z = z * z + c if z.real * z.real + z.imag * z.imag >= 4: # Hors de l'ensemble break else: # Dans l'ensemble arr[idx_y, idx_x] = 1 return arr

Cette fonction renvoie un tableau d'entiers Numpy indiquant si un point fait partie de l'ensemble de Mandelbrot (1) ou non (0).

Maintenant, lançons un Python depuis le même répertoire :

>>> import mandel >>> print(mandel.mandelbrot(20, 15)) [[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0] [0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0] [0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0] [0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]

Ouf, ça ressemble :-) Maintenant compilons cette même fonction avec Numba :

>>> from numba import jit >>> opt = jit(mandel.mandelbrot) >>> print(opt(20, 15)) [[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0] [0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0] [0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0] [0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0] [0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]

Et lançons un benchmark d'une scientificité rigoureuse sur un tableau de 200x200 :

>>> import timeit >>> timeit.timeit("mandel.mandelbrot(200, 200)", setup="import mandel", number=1) 0.20483311700081686 >>> timeit.timeit("opt(200, 200)", setup="from __main__ import opt", number=1) 0.003343598000355996

Sur ce cas d'usage d'une grande importance, Numba est ainsi 60 fois plus rapide que l'interpréteur CPython !

Principe de fonctionnement

Numba est un optimiseur fonction par fonction. Il part de la fonction que vous décorez avec numba.jit et lance une inférence de types pour essayer d'assigner un type précis à chaque variable et valeur intermédiaire dans la fonction. Pour cela, il utilise des règles dédiées à chaque opérateur, fonction standard, etc.

Pour définir les types de départ du processus d'inférence, il y a en réalité deux possibilités :

  • Dans l'utilisation de base de numba.jit, l'utilisateur ne passe pas de paramètres : c'est alors lors de l'appel de la fonction décorée que les types des arguments sont utilisés pour lancer le processus d'inférence (la compilation est ici paresseuse).
  • Dans une utilisation avancée, l'utilisateur peut décrire explicitement les types à l'entrée de la fonction (cela lui permet, par exemple, de choisir des flottants simple précision plutôt que double précision) ; dans ce cas, la compilation a lieu immédiatement.

L'inférence de type est l'étage fondamental qui permet ensuite de produire du code travaillant sur des types bas niveau, plutôt qu'au niveau du modèle objet de Python, qui est beaucoup plus difficile à optimiser. Bien entendu, la chaîne de traitement (pipeline) est constituée de multiples étages :

  1. décodage du bytecode CPython
  2. construction d'un graphe de flot de contrôle (CFG)
  3. génération d'une représentation intermédiaire (IR) spécifique à Numba
  4. inférence de types, produisant une détermination du type de chaque variable manipulée par la fonction
  5. génération de code LLVM correspondant à l'exécution de l'IR sur les types déterminés précédemment
  6. appel à LLVM pour la génération du code machine, et encapsulation du tout dans un objet dédié (wrapper) qui lance le code machine quand il est appelé

Grâce à LLVM, Numba n'a pas à se charger des optimisations bas niveau (propagation de constantes, vectorisation SIMD, etc.) et peut se concentrer sur les traitements spécifiques au langage Python.

Pour une présentation plus détaillée, il convient de lire la documentation (en anglais) : architecture de Numba.

Limitations

À l'heure actuelle, plutôt que de se lancer dans une liste interminable de limitations, il est plus raisonnable de lister ce qui est supporté.

Types supportés
  • les scalaires numériques, que ce soit les types Python (int, float, complex…) ou NumPy (numpy.complex64, etc.)
  • les booléens
  • les dates et intervalles de temps NumPy (numpy.datetime64 et numpy.timedelta64)—mais pas les types standard datetime.datetime et datetime.timedelta
  • les tuples des types ci-dessus
  • les tableaux NumPy des types ci-dessus
Constructions supportées

Numba supporte la plupart des constructions syntaxiques du langage, sauf le traitement des exceptions (try... except, etc.), les gestionnaires de contexte (with), les générateurs (yield) et quelques autres détails.

Fonctions supportées

Numba supporte une grande partie des opérateurs numériques, des fonctions standard (notamment le module math), et certaines fonctions de NumPy. Il est également capable d'optimiser les appels à des fonctions externes via ctypes ou cffi.

Différences sémantiques

Le caractère volontaire (opt-in) de la compilation permet à Numba de présenter des différences sémantiques par rapport au langage Python. Je ne les listerai pas ici, mais une différence évidente a trait aux entiers : les entiers de Python sont de largeur arbitraire, ceux de Numba sont de largeur fixe (déterminée à l'inférence de types, ou forcée par l'utilisateur). Un dépassement lors d'opérations mathématiques entraîne simplement une troncation.

Notons qu'une grande partie de ces différences reflète en réalité le comportement de NumPy (dont les entiers sont aussi à largeur fixe, par exemple).

Numba et l'écosystème Python

Le fait que Numba fonctionne au-dessus de CPython lui permet de s'intégrer facilement à l'écosystème existant. Comme on l'aura compris, l'intégration avec NumPy est également une fonctionnalité de premier plan. D'une manière générale, la stratégie de Continuum (cf. ci-dessous) est de maximiser les possibilités d'interaction entre les multiples briques de calcul scientifique disponibles pour Python.

Statut du projet

Numba est supporté par Continuum Analytics, qui paye à cet effet plusieurs développeurs (dont l'auteur de cette dépêche). Le développement est en partie financé par des clients et des fonds de recherche américains. Nous recevons également des contributions extérieures. Bien entendu, le projet est libre (licence de type MIT).

Contribuer

Numba est un projet jeune auquel manquent de nombreuses fonctionnalités ; il y a donc beaucoup d'opportunités de contribution. Le processus est détaillé dans la documentation. Les compétences nécessaires dépendent de ce à quoi vous vous intéressez :-) La majeure partie du code de Numba est en Python ; il y a quelques parties en C, mais on les évite assez facilement. Nul besoin d'être en expert en NumPy ou en LLVM pour commencer (je ne les connaissais presque pas).

Au débotté, voici quelques directions possibles de contribution, par ordre de difficulté :

  • améliorer la documentation
  • améliorer le retour utilisateur, qui est actuellement assez fruste (messages d'erreur, informations sur la fonction compilée)
  • corriger des bugs (!)
  • ajouter le support de nouvelles fonctions (de la bibliothèque standard ou de NumPy)
  • ajouter le support de nouveaux types
  • ajouter le support de nouvelles constructions (comme la gestion des exceptions ou les générateurs)
Télécharger ce contenu au format Epub

Lire les commentaires

Catégories: Nouvelles du Libre

QNAP lance l'application mobile Qget Android HD

Toolinux - mer, 17/09/2014 - 23:20

QNAP annonce la sortie de l'application mobile Qget Android HD, destinée aux utilisateurs de tablettes pour gérer des tâches de téléchargement sur leur Turbo NAS.

- Logiciels
Catégories: Nouvelles du Libre

iPrint 1.1 et Filr 1.1 chez Novell

Toolinux - mer, 17/09/2014 - 23:15

Les dernières versions de Novell iPrint et Novell Filr offrent aux entreprises des solutions d'impression et de partage de fichiers pour les principaux systèmes mobiles.

- Logiciels
Catégories: Nouvelles du Libre

BlendWebMix : deuxième édition fin octobre à Lyon

Toolinux - mer, 17/09/2014 - 23:11

La Cuisine Du Web, l'Université de Lyon et le Cluster Edit confirment la tenue de la deuxième édition de BlendWebMix, les 29 & 30 octobre prochains à la Cité Internationale de Lyon.

- Evénements et séminaires
Catégories: Nouvelles du Libre
Syndiquer le contenu