IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2013
    Messages
    8 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2013
    Messages : 8 430
    Points : 197 306
    Points
    197 306
    Par défaut Microsoft rend disponible en open source des composants majeurs de son moteur de recherche Bing
    Microsoft rend disponible en open source des composants majeurs de son moteur de recherche Bing,
    d'autres modules seront publiés au fur et à mesure

    Sous la houlette de Satya Nadella qui semble lui avoir insufflé une énergie nouvelle, Microsoft prend une direction nouvelle : après avoir embrassé Linux (notamment en apportant le shell Unix Bash à Windows 10 ou en projetant de rendre disponible SQL Server 2016 cette année sur Linux) ou s’être lancé dans un processus d’ouverture (disponibilité de ses solutions Office sur l’écosystème iOS, développement de projet pour faciliter le portage d’applications tierces vers Windows 10 comme avec son projet Islandwood - pour faciliter le portage d’application iOS vers Windows 10), Microsoft continue son avancée dans le monde de l’open source.

    Sa dernière progression dans ce domaine est la mise en open source de composants majeurs de Bing, son moteur de recherche. Parmi ces composants figure BitFunnel, une bibliothèque haute-performance pour des recherches de texte sur internet. BitFunnel est basé sur un algorithme probabiliste qui identifie et classe les documents en fonction de requêtes impliquant des mots-clés, des phrases et des expressions mathématiques.

    Dans un billet de blog, Michael Hopcroft, un ingénieur Microsoft qui a été parmi les premiers à avoir participé au développement de BitFunnel, a partagé des moment-clés dans le développement de BiFunnel et a invité la communauté open source à rejoindre les développeurs de BitFunnel. Microsoft a décidé de commencer le projet avec un dépôt vide dans lequel seraient apportés un à un des modules BitFunnel, l’objectif étant d’évoluer progressivement avec la communauté.

    Sur le dépôt GitHub de BitFunnel, trois projets majeurs sont listés. Le premier est BiFunnel, désigné comme étant un « moteur de recherche bébé ». Le système de recherche / récupération de texte a été posté « dans une disposition d’esprit de développement ouvert, mais rien ici n’a été préparé pour une consommation publique » sans compter que « la documentation n’est pas existante et le code est dans un état incomplet ». Bien entendu, à ce stade il n’est pas encore fonctionnel.

    Workbench, une boîte à outils qui va servir à la préparation du texte pour une utilisation de BitFunnel, fait lui aussi partie des trois projets majeurs de BitFunnel. Il s’agit plus précisément ici de convertir les fichiers dump de base de données Wikipedia dans un format lisible par BitFunnel. Le processus de conversion implique de parser les fichiers dump Wikipedia, d'extraire chaque document, de retirer les marqueurs wiki, d'effectuer une analyse de Lucene pour la tokenisation et au final de générer et d'encoder les données au format BitFunnel.

    Le dernier projet en date est NativeJIT, une bibliothèque open source multi-plateformes pour des compilations haute performance d’expressions impliquant des structures de données C. Le code généré est alors optimisé avec une attention particulière apportée à l’allocation de registre. Voici un exemple d’un code qui calcule la surface d’un cercle :

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #include "NativeJIT/CodeGen/ExecutionBuffer.h"
    #include "NativeJIT/CodeGen/FunctionBuffer.h"
    #include "NativeJIT/Function.h"
    #include "Temporary/Allocator.h"
     
    #include <iostream>
     
    using NativeJIT::Allocator;
    using NativeJIT::ExecutionBuffer;
    using NativeJIT::Function;
    using NativeJIT::FunctionBuffer;
     
    int main()
    {
        // Create allocator and buffers for pre-compiled and post-compiled code.
        ExecutionBuffer codeAllocator(8192);
        Allocator allocator(8192);
        FunctionBuffer code(codeAllocator, 8192);
     
        // Create the factory for expression nodes.
        // Our area expression will take a single float parameter and return a float.
        Function<float, float> expression(allocator, code);
     
        // Multiply input parameter by itself to get radius squared.
        auto & rsquared = expression.Mul(expression.GetP1(), expression.GetP1());
     
        // Multiply by PI.
        const float  PI = 3.14159265358979f;
        auto & area = expression.Mul(rsquared, expression.Immediate(PI));
     
        // Compile expression into a function.
        auto function = expression.Compile(area);
     
        // Now run our expression!
        float radius = 2.0;
        std::cout << "The area of a circle with radius " << radius
                  << " is " << function(radius);
     
        return 0;
    }

    Voici le code assembleur généré sur Windows :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    PI_CONSTANT:
       db 0f 49 40                              ; PI constant is stored in memory.
    ENTRY_POINT:
      sub         rsp,8                         ; Standard function prologue.
      mov         qword ptr [rsp],rbp           ; Standard function prologue.
      lea         rbp,[rsp+8]                   ; Standard function prologue.
      mulss       xmm0,xmm0                     ; Multiply by radius parameter by itself.
      mulss       xmm0,dword ptr [29E2A580000h] ; Multiply by PI.
      mov         rbp,qword ptr [rsp]           ; Standard function epilogue.
      add         rsp,8                         ; Standard function epilogue.
    À l'heure actuelle, le dépôt de NativeJIT est encore au stade rudimentaire. Les fonctions optimisées avec NativeJIT sont supposées ne pas changer quoi que ce soit en dehors du contexte de la fonction. Si ces fonctions appellent d'autres éléments via la méthode CallNode de NativeJIT, il est de la responsabilité du développeur de suivre et de faire face à tous les changements qui se produisent.

    Source : GitHub BitFunnel, blog BitFunnel
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre éclairé Avatar de MagnusMoi
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2013
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 137
    Points : 876
    Points
    876
    Par défaut Question bête car je suis idiot !!!
    Euh ...
    Ce ne serait pas du C++ au lieu du C le code de calcul de cercle ?

    Sinon c'est une bonne nouvelle cette ouverture !
    Est-ce par contre une stratégie de colonisation ? (en imposant ses "technologies" dans le libre)
    Je n'ai pas pour l'instant d'y jeter un coup d’œil, mais avec le .Net core, je vais suivre attentivement cette disponibilité de composant de Bing ]
    True Story Bro

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/03/2016, 12h27
  2. Réponses: 1
    Dernier message: 10/08/2015, 19h51
  3. Réponses: 0
    Dernier message: 19/03/2015, 14h49
  4. Réponses: 6
    Dernier message: 03/11/2013, 01h47
  5. erp open source, des idées ?
    Par lolo007 dans le forum Forum général ERP
    Réponses: 8
    Dernier message: 26/12/2007, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo