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 :

Benchmark sur processeur multi-core


Sujet :

C++

  1. #1
    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 Benchmark sur processeur multi-core
    Salut

    J'ai ajouté une gestion multi-thread à ma bibliothèque, dont la 1ère application sera faite sur le calcul de la transformée de Fourier.
    Mais je n'ai qu'un Pentium 4 HT à ma disposition qui ne me permet pas de tester pleinement le multi-threading.

    Quelqu'un veut-il bien lancer les 2 benchmarks sur une machine muti-core sous Windows pour que je puisse régler les paramètres d'optimisation?
    (Bien sûr sans autres tâche de fond)
    Chaque Benchmark dure 2-3 minutes.
    Il me suffit de me donner le fichier texte produit par chaque benchmark

    Fichiers téléchargeable directement sur mon site:
    1) Benchmark de référence avec 1 seul thread:
    http://www.ient.rwth-aachen.de/team/...k_FFT_SSE2.zip
    2) Benchmark muti-thread
    http://www.ient.rwth-aachen.de/team/...FT_SSE2_MT.zip

    Si tout va bien, j'aurais 2-3 autres benchmarks qui suivront.

    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Fournis plutôt les sources, et je pourrais tester sur de l'Intel Xeon multi-processeur multi-core sous Linux.
    Boost ftw

  3. #3
    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 sympa, mais c'est pas vraiment possible de fournir les sources pour le moment. (trop compliqué, trop de paramétrages...) Ca le sera une fois que les nouveaux modules seront testés.
    Ma librairie est téléchargeable sur le lien suivant, mais y'a pas encore le module de gestion multi-thread.
    http://www.ient.rwth-aachen.de/team/...al/genial.html

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu devrais ajouter pthreadVC2.dll dans ton archive, vu que la version MT en dépend.

    Je te joins mes résultats sur Athlon DualCore 3800+ sous Windows XP SP2.
    Fichiers attachés Fichiers attachés

  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
    Merci Laurent

    Excuse moi, je ne pensais plus à la dépendance des pthreads. Les prochains benchmarks seront compilés sans aucune dépendance (je ferais l'édition de lien avec les threads natifs de windows).

    Je vais analyser les résultats du bench que tu as effectué. Mais dans l'ensemble je suis plutôt déçu par les valeurs: la vitesse d'exécution n'est meilleur que pour les très grandes FFT.

    Attends toi à d'autres benchmarks au fil du temps...
    En attendant, si d'autres veulent bien exécuter les benchs sur d'autres processeurs multi-core, je les remercie par avance.

  6. #6
    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 pas la première fois que je fais cette constatation. J'ai la nette impression que les processeurs AMD sont plus lents que les Pentiums pour les calculs SSE. (c'est peut-être aussi à cause d'une gestion de cache différent, allez savoir).
    En tout cas j'ai de meilleurs vitesses sur mon vieux P4 HT 2.6GHz que sur ton Athlon. Les valeurs dans les tables que tu me donnes correspondent à des Mflops, ton Athon plafonne vers les 4000, alors que mon P4 2.6GHz vers les 5000, et un P4 3.4GHz vers les 6000.
    cf 1er graphique sur http://www.ient.rwth-aachen.de/team/...hmark_fft.html


    Cette fois, les benchmarks ne devraient plus avoir de dépendance:

    Bench de référence sans multi-threading (déjà exécuté par Laurent)
    http://www.ient.rwth-aachen.de/team/...k_FFT_SSE2.zip

    4 nouveaux benchs:
    http://www.ient.rwth-aachen.de/team/...FT_SSE2_MT.zip
    http://www.ient.rwth-aachen.de/team/...T_SSE2_MT0.zip
    http://www.ient.rwth-aachen.de/team/...T_SSE2_MT1.zip
    http://www.ient.rwth-aachen.de/team/...T_SSE2_MT2.zip

    Ces benchs devraient m'aider à déterminer dans quelle mesure le multi-threading vaut la peine d'être appliqué sur une seule FFT. Pour certaines tailles de FFT, les vitesses devraient être catastrophiques, car l'algo applique systématiquement 2 processus pour n'importe quelles tailles.

    Concluant ou pas, je ferai d'autres benchs sur les matrices. Il ne s'agira plus alors de faire divers threads à l'intérieur d'une unique FFT, mais d'exécuter des FFT en parallèle.

  7. #7
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Pour l'instant j'ai juste fait les deux premiers benchs.

    Sur un portable : Core Duo T2300 @ 1.66 Ghz
    Fichiers attachés Fichiers attachés

  8. #8
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Les 3 autres benchs
    Fichiers attachés Fichiers attachés

  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
    merci
    Ce n'est malheureusement pas 2 fois plus rapide avec 2 threads comme je l'espérais. C'est peut-être à cause du temps d'accès mémoire, sur mon ordi c'est un facteur limitant.
    Y'a quand même un gain non négligeable pour les tailles à partir de 8192.

    Par contre le portable Core Duo T2300 est nettement plus lent. Il plafonne à 2000 Mflops. Alors que sur un Core 2 Duo de bureau d'un copain, les mêmes benchmarks (single-thread) fait y'a quelques mois donnaient des valeurs plafonds dans les 7000-8000.
    Il est en mode économie d'énergie sur un portable ou un truc du genre?

    D'autres benchmarks suivront, probablement demain...

    PS: pour ceux que ça peut intéresser voici mes algos de calculs parallèles (License GPL mais libre à tout commentaire et critique constructive). Je me suis quelque peu inspiré de la librairie d'Intel TBB. C'est le genre d'algos que Boost est à 100 lieues d'avoir. Les fonctions les plus intéressantes sont parallel_for et parallel_reduce. (Des exemples d'utilisation sont écrits dans les commentaires)

  10. #10
    Membre éclairé Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Points : 844
    Points
    844
    Par défaut
    Ce que tu perd en SSE2 sur AMD devrait s'équilibrer avec l'accès mémoire qui est plus rapide car les caches et la mémoire sont en prise directe avec les cores sans passer par le North Bridge.
    Avant de poster un message .
    Quand vous avez la réponse à votre question, n'oubliez pas de cliquer sur .

  11. #11
    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 mchk0123
    Ce que tu perd en SSE2 sur AMD devrait s'équilibrer avec l'accès mémoire qui est plus rapide car les caches et la mémoire sont en prise directe avec les cores sans passer par le North Bridge.
    En tout cas en single-threads mes benchs SSE (pas seulement avec la FFT) sont tous sérieusement plus rapides sur les Pentiums que sur les AMDs.
    Alors je sais pas ce que c'est que ce "pont du nord", mais l'accès mémoire des AMDs n'est visiblement pas suffisant pour rattraper les Pentiums.

  12. #12
    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
    En tout cas mon but n'est pas de comparer les perfs de divers processeurs entre eux (même si c'est toujours intéressant), mais de comparer les perfs de mon implémentation single/multi threads.

    A la vue des résultats précédents, je doute que je vais laisser le multi-threading "intra-FFT". Même la librairie d'Intel MKL n'implémente pas un tel mode (cf les benchs d'Intel sur http://www.intel.com/cd/software/pro...eng/266852.htm )

    Voici 3 nouveaux benchs pour tester la FFT de matrices, ça devrait être plus intéressant puisque les FFT sont exécutées en parallèle sur les différentes lignes et colonnes.
    Comme les benchs précédents, certains résultat devraient être catastrophiques (en particulier pour les petites matrices) puisque pour l'instant les algos utilisent systématiquement plusieurs threads.

    -Bench de reférence single-threaded
    http://www.ient.rwth-aachen.de/team/...FT_64_SSE2.zip
    -2 variantes de bench multi-threaded
    http://www.ient.rwth-aachen.de/team/...64_SSE2_MT.zip
    http://www.ient.rwth-aachen.de/team/...4_SSE2_MT1.zip

    Merci d'avance

  13. #13
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Moi, non mon portable n'était pas du tout en mode économie d'énergie..

    Il fait tourner correctement Supreme Commander en tout cas .

    Je t'envoie les résultats des derniers benchs.
    Fichiers attachés Fichiers attachés

  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
    Citation Envoyé par HanLee
    Moi, non mon portable n'était pas du tout en mode économie d'énergie..

    Il fait tourner correctement Supreme Commander en tout cas .
    C'est quand même vraiment étrange que les valeurs des benchs soient aussi faible sur ton Core Duo, d'autant que les unités de calcul SSE sont sensées être bien meilleures que sur les pentiums. Et comme c'est le même bench pour toutes les machines...
    J'imagine que Supreme Commander est un jeu. Peut-être que t'as une bonne carte graphique 3D...

    Les valeurs du mutithreading correspondent bien à ce que j'attendais. Les gains en vitesse ne sont pas négligeables, et sont aux alentour de +70% sur les matrices de tailles moyennes. Je vais régler la gestion des threads pour qu'elle s'adapte aux dimensions.

    C'est super sympa de ta part, et ça serait cool s'il y avait d'autres qui fassent tourner les benchs. (C'est l'histoire de qqs minutes et vous pourrez comparer les perfs de vos ordis!)

    Tant que t'es là, tu veux bien essayer mon programme de détection automatique des caractéristiques du processeur sur ton Core Duo et de me copier/coller la sortie.(Je vais me servir de cette détection entre autres pour déterminer automatiquement le nombre optimal de threads pour les algos). J'ai pas encore eu l'occasion de le tester sur un tel processeur.
    http://www.ient.rwth-aachen.de/team/...oads/cpuid.zip
    Je sais comment détecter le nombre de noyaux d'un processeur, par contre je ne sais pas comment détecter le nombre de processeurs d'un système. Si quelqu'un sait comment faire je suis preneur.

  15. #15
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Voilà les résultats pour mon Athlon DualCore 3800+.
    Fichiers attachés Fichiers attachés

  16. #16
    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
    Laurent, merci à toi aussi.

    Y'a des différences notables entre les 2 processeurs AMD ATHLON DualCore 3800+ et Intel Core Duo T2300 @ 1.66 Ghz
    -on voit bien que le cache de l'Athlon est plus petit par le fait que le Core Duo est plus rapide pour les grandes matrices
    -Sur certaines tailles de matrices, l'Athlon atteint le gain idéal de x2 (mazette!) alors que le Core Duo n'atteint "que" x1.7.
    -L'Athlon réagit mal à la deuxième version multithreadée (MT1)

    Il faut que je vous explique la différence entre les 2 versions testées: la granularité (dernier paramètre des fonctions parallel_for et parallel_reduce, cf sources plus haut). Les 2 versions testent les granularités extrêmes, a savoir:
    1) la matrice est divisée en 2 part égales (blocs haut et bas). Chacun des threads obtient l'une d'elle et calcule les FFT sur chaque ligne de sa part. Idem avec les FFT verticales (blocs gauche et droit)
    2) Chaque ligne (et respectivement chaque colonne) peut être attribué à n'importe lequel des 2 threads)

    Je vais régler les algos sur une granularité intermédiaire grâce aux résultats de vos benchs, quitte à perdre un peu en vitesse. Mais il y aura ainsi une meilleure répartition de la charge sur chaque noyau (par exemple si un programme tiers est exécuté en même temps)
    Attendez-vous donc à un prochain benchmark pour vérifier que la granularité sera correcte.

  17. #17
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Citation Envoyé par Charlemagne
    C'est quand même vraiment étrange que les valeurs des benchs soient aussi faible sur ton Core Duo, d'autant que les unités de calcul SSE sont sensées être bien meilleures que sur les pentiums. Et comme c'est le même bench pour toutes les machines...
    J'imagine que Supreme Commander est un jeu. Peut-être que t'as une bonne carte graphique 3D...
    Oui, mais c'est un jeu de stratégie, qui met à genoux toutes les config. qui n'ont qu'un seul core, et seules celles avec au moins 2 cores s'en sortent bien en fait.
    La carte graphique entre très peu en jeu.

    Citation Envoyé par Charlemagne
    C'est super sympa de ta part, et ça serait cool s'il y avait d'autres qui fassent tourner les benchs. (C'est l'histoire de qqs minutes et vous pourrez comparer les perfs de vos ordis!)
    De rien . J'ai téléchargé pour voir si le test n'était pas chiant à exécuter, et ben non, il suffit de lancer et tout se déroule tout seul ; les .zip ne contiennent que le fichier et non pas un répertoire, c'est pour ça que je les ai lancés sans trop de questions .
    Il suffit de rentrer en ligne de commande tous les programmes à la suite et je fais autre chose en attendant...

    Ce que tu peux faire, c'est aussi livrer tous les programmes dans un .zip, avec un petit script .bat, et on récupère juste les fichiers à la sortie .

    Citation Envoyé par Charlemagne
    Tant que t'es là, tu veux bien essayer mon programme de détection automatique des caractéristiques du processeur sur ton Core Duo et de me copier/coller la sortie.(Je vais me servir de cette détection entre autres pour déterminer automatiquement le nombre optimal de threads pour les algos). J'ai pas encore eu l'occasion de le tester sur un tel processeur.
    http://www.ient.rwth-aachen.de/team/...oads/cpuid.zip
    Je sais comment détecter le nombre de noyaux d'un processeur, par contre je ne sais pas comment détecter le nombre de processeurs d'un système. Si quelqu'un sait comment faire je suis preneur.
    Caractéristiques :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    name    Genuine Intel(R) CPU           T2300  @ 1.66GHz
    vendor  GenuineIntel
    intel   1
    amd     0
    mmx     1
    sse     1
    sse2    1
    sse3    1
    3dnow   0
     
    physical core count     2
    logical processor count 2
    L1 cache size           32768
    L2 cache size           2097152
    Questions : est-ce que les jeux d'instructions sse, sse2 et sse3 servent à accélérer la même chose ?
    Est-ce qu'il y a une relation d'inclusion entre les 3 jeux d'instructions ?

    Et sinon, est-ce qu'il est possible de cumuler les avantages de tous les jeux d'instructions en même temps ? C'est à dire, pour une opération particulièrement couteuse, utiliser à la fois MMX, SSE, SSE2, SSE3 ?

    Un code utilisant SSE3 fonctionnera-t-il sur un processeur qui ne possède pas ce jeu d'instructions ou bien il plantera tout simplement ?
    Je me demande s'il faut à chaque fois faire un test d'existence des instructions et appeler le bon algorithme ou bien...

  18. #18
    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
    Ca roule pour la détection des caractéristique de ton CPU.
    C'est le premier qui me donne une valeur correcte pour la taille de cache (seuls les processeurs récents donnent cette information)

    Citation Envoyé par HanLee
    Oui, mais c'est un jeu de stratégie, qui met à genoux toutes les config. qui n'ont qu'un seul core, et seules celles avec au moins 2 cores s'en sortent bien en fait.
    La carte graphique entre très peu en jeu.
    Alors, je comprends pas pourquoi les benchs sont lents sur ton ordi.
    Je tâcherai de les faire dans les prochains jours sur l'ordi d'un copain avec un Apple imac Core 2 Duo (??GHz) de bureau avec une partition XP. (celui mentionné plus haut dont les résultats atteignaient allègrement les 8000 MFlops en single thread)

    Citation Envoyé par HanLee
    Ce que tu peux faire, c'est aussi livrer tous les programmes dans un .zip, avec un petit script .bat, et on récupère juste les fichiers à la sortie .
    J'y penserai la prochaine fois! A priori je n'ai plus qu'un ou 2 benchs FFT à vous faire faire, mais tôt ou tard je vais intégrer le multi-threading aux calculs algébriques intégrés à ma librairie (surtout la multiplication de matrices) et j'aurai encore des benchs...


    Citation Envoyé par HanLee
    Questions : est-ce que les jeux d'instructions sse, sse2 et sse3 servent à accélérer la même chose ?
    Est-ce qu'il y a une relation d'inclusion entre les 3 jeux d'instructions ?
    il y a a bien entendu une compatibilité croissante. En fait SSE2 désigne le jeu d'instructions supplémentaires qui n'existait pas dans SSE, etc. SSE4 existe aussi mais je sais pas si il est déjà commercialisé (je me suis pas tenu au courant), si ça se trouve les Core Duo l'ont déjà.
    En bref:
    - MMX: 8 registres de 64 bits pour du calcul vectoriel sur les entiers (8 chars,8 unsigned char,4 short,4 unsigned word,2 int) MMX est vieux, pas pratique (conséquence du fait qu'il utilise les mêmes registres que les calculs flottants), rendu de facto obsélète par SSE2.
    -SSE: 8 nouveaux registres de 128bits. Principalement pour les calculs vectoriels sur 4 floats, mais ajoute également quelques instructions manquantes à MMX
    -SSE2: (2 doubles, 16 char, 16 unsigned char, 8 short, 8 unsigned short, 4 int)
    -SSE3: une bonne dizaine de nouvelles instructions (pas de quoi fouetter un chat), pour accélérer les multiplications de nombres complexes (pas si pratiques que ça, j'aurais fait ça différemment), quelques instructions horizontales qui servent pas à grand chose (et qui sont lentes en pratique), une instruction pour accélérer le chargement mémoire dans certains cas particuliers (Estimation des mouvements en traitement de l'image). Bref SSE3 est plutôt décevant. Ma FFT ne gagne par exemple que 6-7% en vitesse.

    Les calculs SSEx accélèrent sérieusement la vitesse de calcul (à conditions de pas tomber dans certains pièges que j'ai découvert au fur et à mesure).
    Mais Intel fait mal les choses dans l'ensemble, l'Altivec des PowerPC est bien mieux conçu:
    -32 registres (8 pour Intel)
    -des instructions avec 3 opérandes 'reg1=reg2 op reg3' (2 opérandes pour Intel 'reg1 op= reg2')
    -jeu d'instructions complet (chez Intel y'a des instructions manquantes selon les types, et c'est énervant.)
    Mais bon, visiblement les PowerPC n'avaient plus trop de potentiel, c'est sûrement pas pour rien qu'Apple s'est converti à Intel.

    Citation Envoyé par HanLee
    Et sinon, est-ce qu'il est possible de cumuler les avantages de tous les jeux d'instructions en même temps ? C'est à dire, pour une opération particulièrement couteuse, utiliser à la fois MMX, SSE, SSE2, SSE3 ?
    Pas de mélange avec MMX, en fait MMX ne permet même pas d'utiliser les calculs flottants en même temps. De toute façon il faut oublier MMX.
    SSE/SSE2/SSE3 sont des jeux d'instructions qui utlisent les mêmes registres mais qui interprètent différemment leur contenu (char,unsigned char,short,unsigned short,int,float,double). Mélanger SSE et SSE2 est donc possible mais en pratique on ne s'en sert pas puisqu'on travaille habituellement sur un seul type de données à la fois.
    Citation Envoyé par HanLee
    Un code utilisant SSE3 fonctionnera-t-il sur un processeur qui ne possède pas ce jeu d'instructions ou bien il plantera tout simplement ?
    Je me demande s'il faut à chaque fois faire un test d'existence des instructions et appeler le bon algorithme ou bien...
    Il plantera. C'est pour ça que je recompile mes programmes selon les processeurs cibles. Il est possible (mais j'ai pas regardé comment) avec ICL Intel C++ compiler (et probablement d'autres compilos tel que VC) de mélanger plusieurs codes destinés à divers processeurs, ça augmente la taille de l'exécutable, mais ça peut être payant pour certains algorithmes.

    Un exemple d'utilisation des instructions SIMD: une petite bibliothèque gratuite d'Intel qui propose des fonctions mathématiques rapides (trigo,log...) en contrepartie d'une perte minime de précision: Approximate Math Library http://www.intel.com/design/pentiumi...ols/AMaths.zip

  19. #19
    Membre éclairé Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Points : 844
    Points
    844
    Par défaut
    Citation Envoyé par Charlemagne
    - MMX: 8 registres de 64 bits pour du calcul vectoriel sur les entiers (8 chars,8 unsigned char,4 short,4 unsigned word,2 int) MMX est vieux, pas pratique (conséquence du fait qu'il utilise les mêmes registres que les calculs flottants), rendu de facto obsélète par SSE2.
    -SSE: 8 nouveaux registres de 128bits. Principalement pour les calculs vectoriels sur 4 floats, mais ajoute également quelques instructions manquantes à MMX
    -SSE2: (2 doubles, 16 char, 16 unsigned char, 8 short, 8 unsigned short, 4 int)
    -SSE3: une bonne dizaine de nouvelles instructions (pas de quoi fouetter un chat), pour accélérer les multiplications de nombres complexes (pas si pratiques que ça, j'aurais fait ça différemment), quelques instructions horizontales qui servent pas à grand chose (et qui sont lentes en pratique), une instruction pour accélérer le chargement mémoire dans certains cas particuliers (Estimation des mouvements en traitement de l'image). Bref SSE3 est plutôt décevant. Ma FFT ne gagne par exemple que 6-7% en vitesse.
    Si tu est à la recherche de registres pourquoi ne pas essayer le 64 bits ?
    Le nombre de registres SSE 128 bits sont doublés et passent à 16. Les généraux passent aussi à 16 et sont sur 64 bits (of course).
    Enfin, je dis ça mais si faut ça n'a aucun rapport avec les FFT.

    NB : vista est planté en attendant réparation de l'OS, dés que c'est fait je fais tourner les benchs sur Opteron.
    Avant de poster un message .
    Quand vous avez la réponse à votre question, n'oubliez pas de cliquer sur .

  20. #20
    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 mchk0123
    Si tu est à la recherche de registres pourquoi ne pas essayer le 64 bits ?
    Le nombre de registres SSE 128 bits sont doublés et passent à 16. Les généraux passent aussi à 16 et sont sur 64 bits (of course).
    Je voudrais bien passé au 64 bits, mais on fait pas toujours ce qu'on veut...
    Il me semblait bien qu'il y avait 16 registres dans ces processeurs.
    Question: les programmes compilés sous IA32 sont-ils compatibles sous 64 bits?
    Si c'était le cas, j'imagine que la moitié des registre n'est pas utilisée.

    J'ai bien une vielle licence pour le Intel C++ Compiler à 64 bits (version 8 je crois), mais j'ai jamais eu l'occasion de tester ce compilo.

    Citation Envoyé par mchk0123
    NB : vista est planté en attendant réparation de l'OS, dés que c'est fait je fais tourner les benchs sur Opteron.
    Merci, j'ai hâte de voir les résultats.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 7 12345 ... DernièreDernière

Discussions similaires

  1. Les processeurs multi-cores pourraient gagner en performances
    Par Katleen Erna dans le forum Hardware
    Réponses: 0
    Dernier message: 01/02/2011, 18h44
  2. Optimiser l'utilisation d'un processeur multi-core
    Par photorelief dans le forum Modules
    Réponses: 11
    Dernier message: 11/04/2010, 21h28
  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. Réponses: 268
    Dernier message: 07/11/2007, 11h11
  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