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

C++ Discussion :

Librairie "calcul matriciel"


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Librairie "calcul matriciel"
    Bonjour tout le monde,

    Je suis un nouveau sur le forum. J'aimerais savoir s'il existe des librairies "calcul matriciel" pour le langage C/C++ c'est à dire "inverse d'une matrice", "produit matriciel",...


    Merci.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par bassabo
    Bonjour tout le monde,

    Je suis un nouveau sur le forum. J'aimerais savoir s'il existe des librairies "calcul matriciel" pour le langage C/C++ c'est à dire "inverse d'une matrice", "produit matriciel",...


    Merci.
    Personne n'a une idée sur le sujet

  3. #3
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    MTL, Blitz++, boost.uBlas, ...

  4. #4
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Ayant un peu touché aux deux dernières, je ne peux que te les conseiller.

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Points : 460
    Points
    460
    Par défaut
    La plus rapide de toutes semble être ATLAS (Automatically Tuned Linear Algebra Software).
    Elle utilise les instructions SSE,SSE2, elle optimise la mémoire cache.
    http://math-atlas.sourceforge.net/
    Malheureusement c'est que du C

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Donc je ne pense pas qu'elle soit plus rapide que MTL, Blitz++ et les autres en C++ qui permettent de supprimer les temporaires et de considérer uen matrice comme un type comme un autre. Pour les instructions SSE et autres, en spécifiant l'architecture d'arrivée + des matrices statiques - taille connue à la compilation -, le compilo devrait pouvoir les utiliser.

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Points : 460
    Points
    460
    Par défaut
    Le compilo n'optimisera jamais ces bibliothèques autant qu'ATLAS.

    Je connais particulièrement bien les algorithmes utilisés par ATLAS. Je reconnais que je ne connais pas bien Blitz++, MTL, Pooma et Co, mais la programmation générique a malheureusement ici des limites.

    La gestion des instructions SSE pour ces bibliothèque reste encore à faire (à ma connaissance) et leurs algorithmes n'optimisent pas la mémoire cache.

    Supprimer les temporaires, (je suppose que ça correspond à la "lazy calculation") est très utile dans certains cas. Mais pour le calcul matriciel, la plupart du temps on veut calculer la matrice complète. L'interface BLAS permet déjà pas mal de combinaison.

    Je ne cherche pas à défendre ATLAS dont je n'aime pas l'interface BLAS en C. Ca ne sera jamais aussi pratique que des bibliothèques génériques.

    Si tu veux faire un test, je veux bien te compiler un programme pour la multiplication de matrices, disons 1024x1024, pour float, double et complexes, et te donner la vitesse sur mon ordi. On comparera avec tes résultats.

  8. #8
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Il faudrait qu'on ait le même PC
    Je ferais sans doute un jour les tests, j'ai comme objectif de faire un petit article sur les bibliothèques matricielles, on verra bien le résultat Je testerai toutes les libs que je trouve et qui sont utilisables - GSL, MTL, Blitz++, boost::uBLAS, ATLAS et d'autres si je trouve, ça prendra juste plus de temps -

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Points : 460
    Points
    460
    Par défaut
    Je parie sur ATLAS. Je parie que Blitz & Co. sont battus à plate couture pour le calcul matriciel.
    Même avec des PCs différents, on aurait un bon ordre de grandeur.
    Au besoin je peux te transmettre un fichier compilé.
    Choisis ta ou tes librairies, et on fait une course.
    Mon PC: P4 2.6GHz, SSE2, Cache L2=512K, Cache L1=8K, FSB 800MHz.

    D'ici 1 ou 2 mois je compte rajouter de nouvelles fonctions (dont des optimisations comme ATLAS) à ma bibliothèque générique qui est déjà en ligne.
    J'aurai alors peut-être besoin d'un testeur pour lancer quelques becnchmarks de ma librairie sur un P4 avec 1Mo de cache. Tu pourrais m'aider?

  10. #10
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Accessoirement, Blitz a les perfs du fortran avec une expressivité proche des notations mathématiques -- il manquerait quelques opérateurs pour bien faire. Et elle ne repose pas juste sur de l'évaluaton paresseuse, mais sur du pré-traitement réalisé à la compil sur les expressions mathématiques.

    Pour le SSE, je reste persuadé que c'est le rôle du compilo que de s'occuper de ces détails pour nous. Des essais dont tu nous avais parlés (si me souvenirs sont bons), je n'ai pas l'impression que cela soit le cas.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  11. #11
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par Charlemagne
    Je parie sur ATLAS. Je parie que Blitz & Co. sont battus à plate couture pour le calcul matriciel.
    Même avec des PCs différents, on aurait un bon ordre de grandeur.
    Au besoin je peux te transmettre un fichier compilé.
    Choisis ta ou tes librairies, et on fait une course.
    Mon PC: P4 2.6GHz, SSE2, Cache L2=512K, Cache L1=8K, FSB 800MHz.

    D'ici 1 ou 2 mois je compte rajouter de nouvelles fonctions (dont des optimisations comme ATLAS) à ma bibliothèque générique qui est déjà en ligne.
    J'aurai alors peut-être besoin d'un testeur pour lancer quelques becnchmarks de ma librairie sur un P4 avec 1Mo de cache. Tu pourrais m'aider?
    OK, je veux bien t'aider Au boulot, j'ai un P4 assez proche.
    De toute manière, je ferai aussi un bench sur ma lib au boulot

  12. #12
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    D'ailleurs, si tu veux m'envoyer ton fichier bench, je me ferai un plaisir de le lancer avec les différentes bibliothèques dont on a parlé, enfin, petit à petit

    Bon, fin du HS

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci tout le monde.

    Je crois que ça va aller avec MTL.

  14. #14
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Points : 460
    Points
    460
    Par défaut
    Merci Miles.
    Mon bench n'est pas encore fait, pas avant 1 mois. Je te recontacterai quand je serai près. Il faudra se mettre d'accord sur les modalités du bench.
    Des multiplications sur un panel de matrices de différentes tailles devraient faire l'affaire.

    Pour bien testet la bibliothèque ATLAS, il faut la compiler sur l'ordinateur testé, parce qu'elle s'adapte à l'ordi (SSE, mémoire cache). Si tu as besoin de conseils pour son installation, n'hésite pas à me contacter.


    Accessoirement, Blitz a les perfs du fortran avec une expressivité proche des notations mathématiques -- il manquerait quelques opérateurs pour bien faire. Et elle ne repose pas juste sur de l'évaluaton paresseuse, mais sur du pré-traitement réalisé à la compil sur les expressions mathématiques.
    ATLAS va plus loin dans les optimisations, mais celles ci ne sont pas génériques.
    Pour le SSE, je reste persuadé que c'est le rôle du compilo que de s'occuper de ces détails pour nous. Des essais dont tu nous avais parlés (si me souvenirs sont bons), je n'ai pas l'impression que cela soit le cas.
    Tu as bonne mémoire (mon dernier poste à ce sujet doit bien remonter à 8-9 mois).
    Mais les optimisations SSE des compilos ne servent (quasiment) à rien. Tout au plus quand le code utilise des schémas C très précis et peu pratiques pour mettre le compilo sur la voie. Il y a de plus le problème de l'alignement.
    (exemple très approximatif et pas sûr du tout):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    float *a, *b, *c...
    for (int i=0; i<n, i+=4)
    {
       a[i]=b[i]+c[i];
       a[i+1]=b[i+1]+c[i+1];
       a[i+2]=b[i+2]+c[i+2];
       a[i+3]=b[i+3]+c[i+2];
    }
    Je crois que ça va aller avec MTL.
    Attention, la MTL n'est plus maintenue à ma connaissance depuis pas mal d'années. Je crois que le mec a passé son doctorat, et bye bye

Discussions similaires

  1. Quelle librairie c++ pour calcul matriciel ?
    Par jeanpeuplu dans le forum C++
    Réponses: 7
    Dernier message: 15/06/2011, 14h11
  2. Librairie "calcul matriciel"
    Par bassabo dans le forum MFC
    Réponses: 0
    Dernier message: 19/04/2006, 12h51
  3. Calcul Matriciel en PL/SQL
    Par PpPool dans le forum PL/SQL
    Réponses: 4
    Dernier message: 02/02/2004, 11h11

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