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 :

[MT] Benchmark de produits matriciels sur processeurs multi-cores


Sujet :

C++

  1. #61
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    et voila

    /usr/local/bin/g++ main.cpp -O2 -I../genial

  2. #62
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    et encore voila

    /usr/local/bin/g++ main.cpp -O3 -I../genial -fopenmp -lgomp

  3. #63
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    et encore voila :-)

    /usr/local/bin/g++ main.cpp -O3 -I../genial

  4. #64
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    j'ai été etonné que des performances avec la compilation avec openmp degrade les perfs...
    bizarre bizarre

  5. #65
    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
    C'est toujours largement en deçà d'ICL. Tes benchs GCC4.2 donnent des perfs de l'odre de 250 Mflops contre 7000-8000 sur mon Pentium 4 HT 2.6GHz.

    T'as bien laisséla macro HAS_SSE2 dans le fichier 'genial_config.h'?

    Mais je pense plutôt que c'est le problème habituel de GCC qui refait surface: GCC ne sait tout simplement pas inliner comme il faudrait. Ca me fait bien rire quand je lis fréquemment dans d'autres discussions du forums des trucs du genre "faire confiance aux compilos pour inliner comme il faut".
    J'ai depuis longtemps la preuve que GCC est à la masse de ce point de vue. (c'est la raison principale pour laquelle les benchs FFT compilés avec GCC sont si mauvais comparés à VC, mais surtout ICL). GCC ne sait tout simplement pas optimiser la programmation générique, et je me moque bien de son optimisation de programmes "C".

    Essaye de décommenter à tour de rôle les macros suivantes dans 'genial_config.h'. Assure toi peut-être quand même au préalable que GCC Mac voit bien la macro par exemple avec "#error coucou"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #elif defined(__GNUC__)
      #error coucou
      //#define inline __inline
      //#define inline __attribute__((__always_inline__))
    #endif

  6. #66
    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
    Citation Envoyé par epsilon68
    j'ai été etonné que des performances avec la compilation avec openmp degrade les perfs...
    bizarre bizarre
    Les perfs ne sont pas tant dégradées que ça mais c'est effectivement bizarre, d'autant que rien n'est parallélisé dans cette version de multiplication matriciel... (c'est pas un bon point pour GCC!)

    Mais pour l'instant c'est négligeable par rapport aux mauvaises perfs de GCC

  7. #67
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    je suis en train de recompiler avec l'inline forcé...
    20 minutes au moins que ca compile ....

  8. #68
    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
    Tu peux dans un premier temps diviser par 2 le temps de compilation en commentant l'une ou l'autre de ces lignes dans le programme principal.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      cout << "float"           << endl; sub(M,0,0,M.nrows(),2)=gemm_benchmark<float           >(sizes);
      //cout << "double"          << endl; sub(M,0,2,M.nrows(),2)=gemm_benchmark<double          >(sizes);

  9. #69
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    toujours pas fini ... c'est atrocement long !!!

  10. #70
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    Citation Envoyé par Charlemagne
    Tu peux dans un premier temps diviser par 2 le temps de compilation en commentant l'une ou l'autre de ces lignes dans le programme principal.
    ... je ne vais plus l'arreter maintenant ... mais c'est bon a savoir pour les prochains benchs...

  11. #71
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    ... toujours pas fini ...
    vive la precompilation !!!!
    vive les libs !!!!
    Waooo les dll !!!

  12. #72
    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
    Citation Envoyé par epsilon68
    ... toujours pas fini ...
    J'ai pas chronométré le temps de compilation avec ICL, mais en tout cas c'est acceptable. Pas un bon point non plus pour GCC.
    (on aura compris pour quel compilo je penche...)

  13. #73
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    et voila avec
    g++ -O3
    et l'inline forcé

    bon ca vole plus haut mais encore trop bas :-(

  14. #74
    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
    Effectivement je suis encore 3 fois plus rapide sur mon ordi avec ICL.
    Ca a duré combien de temps finalement la compilation?

    Il me vient un doute sur ta ligne de commande pour la compilation. Si tu utilises bien SSE2 ou SSE3, il faut normalement (en tout cas pour GCC 3.4) donner l'option "-msse2" respectivement "-msse3". (je ne comprends pas pourquoi GCC a besoin d'options de la sortes, VC et ICL s'en passent bien) C'est bizarre que GCC ne t'ait rien fait remarqué.

    Vérifie peut-être aussi que GCC applique bien TOUS les inlines en lui donnant l'option "-Winline". Si tu vois ne serait-ce qu'un seul warning, alors c'est qu'il n'en fait qu'à sa tête et refuse à tort d'obéir aux consignes.
    Si tu ne vois pas de warning, ça veut dire qu'il ne sait pas optimiser...

  15. #75
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    J'ai relancé la compilation
    /usr/local/bin/g++ main.cpp -I../genial -O2 -msse2 -Winline

    debut: 16h07

  16. #76
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    j'ai downloadé ICC standard edition 10.16 pour voir ....
    des conseils sur la compilation de Genial ?

    aussi la seule difference entre la standard et la pro, ce sont les libs de intel ?

  17. #77
    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
    Citation Envoyé par epsilon68
    j'ai downloadé ICC standard edition 10.16 pour voir ....
    ICC existe pour MAc?? ICC est gratuit pour Mac???? Je pensais que c'était gratuit uniquement sous Linux. Sous Windows il n'y a de gratuit que la licence d'évaluation pendant seulement 2-3 mois.

    Citation Envoyé par epsilon68
    des conseils sur la compilation de Genial ?
    Suivre la même procédure que pour GCC mais avec quelques differences de syntaxe. (cf documentation). Mais ça ne marchera probablement toujours pas à cause des problèmes de configuration que t'avais précédemment.
    De toute façon pour ces quelques tests, il ne vaut mieux pas compiler la librairie puisque tu essayes diverses options.

    Citation Envoyé par epsilon68
    aussi la seule difference entre la standard et la pro, ce sont les libs de intel ?
    J'en sais rien, à fortiori sous Mac/Linux.
    Je sais juste qu'à l'époque (ça remonte à un peu moins de 2 ans) à laquelle j'ai comparé ICL (Windows) et ICC (Linux), les perfs étaient nettement meilleur pour ICL, alors que je m'attendais à la même chose. J'avais l'impression qu'ICC n'en faisait qu'à sa tête, tout comme GCC, en ne suivant pas les consignes pour forcer les inlines. ICC restait quand même meilleur que GCC.

  18. #78
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    Citation Envoyé par Charlemagne
    ICC existe pour MAc?? ICC est gratuit pour Mac???? Je pensais que c'était gratuit uniquement sous Linux. Sous Windows il n'y a de gratuit que la licence d'évaluation pendant seulement 2-3 mois.
    non non ce n'est pas gratuit, j'ai telechargé la version d'eval

    Citation Envoyé par Charlemagne
    J'en sais rien, à fortiori sous Mac/Linux.
    Je sais juste qu'à l'époque (ça remonte à un peu moins de 2 ans) à laquelle j'ai comparé ICL (Windows) et ICC (Linux), les perfs étaient nettement meilleur pour ICL, alors que je m'attendais à la même chose. J'avais l'impression qu'ICC n'en faisait qu'à sa tête, tout comme GCC, en ne suivant pas les consignes pour forcer les inlines. ICC restait quand même meilleur que GCC.
    on est bien parti pour comparer les deux

  19. #79
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    j'ai compilé avec icc...
    icpc main.cpp -o icc-genial -I../genial -O2

    debut: 17h25
    fin: 19h00

  20. #80
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    bon je comprends pas pourquoi les perfs chutent a partir de 400x400 ?

    j'ai recompilé avec icc
    icpc main.cpp -o icc-genial -I../genial -O2 -finline -msse3
    (et j'ai enlevé les doubles)

Discussions similaires

  1. Optimiser l'utilisation d'un processeur multi-core
    Par photorelief dans le forum Modules
    Réponses: 11
    Dernier message: 11/04/2010, 21h28
  2. affichage de produit matricielle sur excel
    Par opensource dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/02/2010, 11h42
  3. petite question sur le multi core
    Par vmfa-2 sven dans le forum Composants
    Réponses: 4
    Dernier message: 23/05/2008, 14h51
  4. Benchmark sur processeur multi-core
    Par Charlemagne dans le forum C++
    Réponses: 123
    Dernier message: 16/07/2007, 10h51
  5. Réponses: 5
    Dernier message: 14/04/2007, 14h12

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