Auteur Sujet: [FAQ] Optimisation Calcul CPU - AVX  (Lu 5548 fois)

0 Membres et 1 Invité sur ce sujet

Philippe06121966

  • Invité
[FAQ] Optimisation Calcul CPU - AVX
« le: 06 janvier 2014 à 13:09 »
EDIT MODO : reprise de posts effacés

Salut !  :hello:

Suis pas un pro du domaine, mais après quelques tests, voici des infos de profane au sujet des UT AVX.

http://www.pcworld.fr/glossaire/avx,213,1.htm
http://www.pcworld.fr/processeur/actualites,intel-parle-officiellement-prochaine-version-avx-512-cartes-hpc-calcul-xeon-phi-knight-landing,540685,1.htm

Comme vous le savez probablement déjà, certains CPU peuvent "faire tourner" des applications SSE2, SSE3, AVX (AVX1, AVX2, ...)

La particularité des jeux d'instructions AVX étant e.a. d'être destinés aux calculs multimédia, scientifiques, financiers, etc
ils permettent d'effectuer certaines tâches beaucoup plus rapidement. (que SSE3 par exemple)

Suivant les projets et le nombre d'UT calculées en même temps, le gain peut dépasser 40 %.

Par contre, il y a plusieurs contraintes liées à leur utilisation.

La principale est que, sous Windows, BOINC ne peut pas reconnaître les capacités AVX de votre CPU et donc transmettre automatiquement
la demande aux projets pour recevoir des UT CPU AVX => il faut créer une app_info.xml pour les demander !
(Sauf PrimeGrid GFN Short qui permet de cocher une case "Force AVX" dans les préférences")

La deuxième est que, ces unités étant gourmandes en ressources (e.a. mémoires CPU), il est
fortement recommandé de désactiver l'hyperthreading => ne travailler QUE sur les coeurs physiques en désactivant les coeurs logiques.
Schématiquement, la charge de travail pour 1 UT AVX = 2 UT SSE3 => ralentissement sévère + chauffe si HT activé.

Pour faire court : sur un i7-4770K : Si je fais tourner 8 UT PrimeGrid GFN Short AVX en même temps, il faut > 200 heures.
Par contre, après désactivation du HT, je peux en faire tourner 4 en même temps en environ 60 heures, sans aucun ralentissement du pc.
Gain de temps = environ 40 % :D
La moyenne indiquée par le site du projet étant d'environ 220 heures.

Sur ASTEROIDS, les UT GPU n'étant, à mon humble avis, pas intéressantes ou en tout cas pas optimisées,
vous pouvez choisir de faire tourner des UT CPU AVX.
Le gain de temps devrait être d'environ 40 % par rapport aux UT SSE3.

Par contre, impossible de les télécharger automatiquement => Si vous voulez essayer des UT ASTEROIDS AVX,
voici comment faire, après vous être assuré que votre CPU supporte AVX.

(Vous pouvez aussi "ordonner" à BOINC de télécharger des SSE2, SSE3 et AVX.
Après essais, BM téléchargera automatiquement les UT adéquates.)

1) Télécharger AVX EXE depuis
http://asteroidsathome.net/boinc/download/

Le nom du fichier est :
period_search_10210_windows_x86_64__avx.exe

2) Télécharger le fichier app_info.xml ci-joint et l'inclure dans : BOINC-DATA/projects/asteroidsathome.net_boinc

!!! En ouvrant le fichier, vous verrez qu'il fait référence aux 3 applications : SSE2, SSE3 et AVX.
Si vous ne voulez recevoir QUE des AVX, il suffit d'effacer les 2 parties SSE2 et SSE3 pour ne garder que :

<app_info>
<app>
<name>period_search</name>
<user_friendly_name>Asteroids</user_friendly_name>
</app>

<!-- AVX -->
<file_info>
<name>period_search_10210_windows_x86_64__avx.exe</name>
<executable/>
</file_info>
<app_version>
<app_name>period_search</app_name>
<version_num>1021</version_num>
<avg_ncpus>1.00</avg_ncpus>
<max_ncpus>1.00</max_ncpus>
<plan_class>avx</plan_class>
<file_ref>
<file_name>period_search_10210_windows_x86_64__avx.exe</file_name>
<main_program/>
</file_ref>
</app_version>

</app_info>

Si vous gardez le fichier attaché sans le modifier, il forcera BOINC à charger les 3 types d'applications,
et c'est BOINC qui choisira automatiquement ce qui convient le mieux.

J'ai laissé le fichier tel quel pour que vous puissiez choisir les applis que vous voulez.

3) Quitter BOINC et redémarrer puis autoriser de nouvelles tâches Asteroids.

Ce fichier peut évidemment être adapté pour d'éventuels autres projets ayant des UT AVX.


J'insiste sur le fait que si vous ne désactivez pas l'HyperThreading, le gain de temps sera minime,
la t° du CPU risque de monter, et même si elle ne monte pas, il va ralentir fortement.

Finalement, pour désactiver l'HyperThreading : Dans le BIOS, options CPU, il y a généralement la possibilité de l'activer ou le désactiver.
Il y a d'autres méthodes, mais je ne les recommande pas, n'étant pas sur du résultat ;)

Bon Amusement et Bon Crunch :D
« Modifié: 30 mai 2015 à 12:08 par LOCTET SetiOne »

JeromeC

  • CàA
  • Messages: 21092
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : [FAQ] Optimisation Calcul CPU - AVX
« Réponse #1 le: 08 janvier 2014 à 13:46 »
C'est visiblement pour du windows, quel est le rôle du .exe dans tout ça ?

Tu sais si la méthode du xml marche sous Mac (sans cet exécutable) ?

Comment savoir si un CPU a le jeu d’instructions AVX ? (si ce n'est le fait qu'il doit être postérieur à début 2011 si j'ai bien compris)
Parce que c'était lui, parce que c'était moi.

JeromeC

  • CàA
  • Messages: 21092
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : [FAQ] Optimisation Calcul CPU - AVX
« Réponse #2 le: 09 janvier 2014 à 23:54 »
Citer
Hello !

Oui, ça ne concerne que Windows ...
Je suppose que sous MAC, BM arrive à détecter les CPU AVX et en informe le serveur.
Pour savoir si un CPU accepte le jeu d'instructions AVX : CPU-Z
Voir Photo Ci-Jointe que j'ai trouvée sur le net.

=> si ton MAC télécharge automatiquement des UT AVX, sous PrimeGrid,  il faut vraiment penser à désactiver l'HT ...
Sinon presque aucun gain de temps + risque de chauffe du CPU

Sur ASTEROIDS c'est peut-être automatique aussi ?

Quant au fichier app_info.xml, il permet ou oblige, c'est selon ;), BM à aller chercher des UT AVX.
Je ne sais pas si ça fonctionne sous MAC puisque, à priori, BM détecte automatiquement la fonction AVX du CPU.

Il y a tout de même des contraintes.

Par exemple : sur mon pc avec 2 GPU, HT OFF = seulement 2 coeurs CPU AVX
car les UT GPU que je calcule sont gourmandes en temps CPU ...

Mais bon. Je voulais juste expliquer comment faire pour recevoir des UT AVX,
beaucoup plus rapide que les SSE3 + détailler les contraintes / recommandations.

Concernant le .exe, il m'a été expliqué sur le forum ASTEROIDS qu'il fallait l'installer pour permettre
la 1ère utilisation sous AVX. Ces fichiers sont fournis par l'admin du projet => installé en confiance.

Sources = je me suis basé sur les explications glanées sur ASTEROIDS et PrimeGrid pour compiler ça
+ essais persos sur PrimeGrid GFN Short :siflotte:


Ma question était surtout théorique, mon i7 date de début 2010 donc aucune chance de AVX...
« Modifié: 30 mai 2015 à 12:06 par LOCTET SetiOne »
Parce que c'était lui, parce que c'était moi.

[AF>Libristes] nico8313

  • Messages: 7863
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : Re : [FAQ] Optimisation Calcul CPU - AVX
« Réponse #3 le: 10 janvier 2014 à 06:29 »
Ma question était surtout théorique, mon i7 date de début 2010 donc aucune chance de AVX...

Effectivement il faut savoir quel modèle de i7 tu possède pour savoir s'il intègre les instructions AVX

C'est visiblement pour du windows, quel est le rôle du .exe dans tout ça ?

Et bien le .exe c'est simplement l'application du projet compilé avec les instructions avx.

Tu sais si la méthode du xml marche sous Mac (sans cet exécutable) ?

A partir du moment ou le projet a compilé une application qui tourne sous Mac avec les instructions avx, oui ça fonctionne.
Par contre sous Mac les applications ne fonctionne pas avec des .exe    :D
L'application pour OSX et là :
http://asteroidsathome.net/boinc/download/period_search_10210_x86_64-apple-darwin__avx_osx

Bien évidement il faut adapter ensuite le fichier xml à l'appli OSX

Comment savoir si un CPU a le jeu d’instructions AVX ? (si ce n'est le fait qu'il doit être postérieur à début 2011 si j'ai bien compris)

Avec un logiciel comme CPU-Z pour Mac je pense.
ça te donne un truc comme ça par exemple:

« Modifié: 10 janvier 2014 à 06:32 par [AF>Libristes] nico8313 »

JeromeC

  • CàA
  • Messages: 21092
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : [FAQ] Optimisation Calcul CPU - AVX
« Réponse #4 le: 12 janvier 2014 à 13:38 »
En fait à la réflexion BOINC nous dit déjà tout :

09-Jan-2014 22:30:09 [---] Processor: 8 GenuineIntel Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz [x86 Family 6 Model 30 Stepping 5]
09-Jan-2014 22:30:09 [---] Processor features: FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 DTES64 MON DSCPL VMX SMX EST TM2 SSSE3 CX16 TPR PDCM SSE4.1 SSE4.2 POPCNT

Logiquement pas de AVX, comme je disais ça n'existe que sur des CPU produits après début 2011, le mien date de plus d'un an avant.
Parce que c'était lui, parce que c'était moi.

kipoos

  • Messages: 3261
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : [FAQ] Optimisation Calcul CPU - AVX
« Réponse #5 le: 02 février 2014 à 04:24 »
manip effectuée sur un core i5  2500k.

j'ai laissé les 3 applis : boinc devrait garder la plus rapide après en avoir fait tourner plusieurs de chaque.
je verrai comment ça marche après avoir vider mon cache simap.

merci phil

sebcbien_bzh

  • Messages: 445
  • Boinc'eur Confirmé
  • ***
  •   
Re : [FAQ] Optimisation Calcul CPU - AVX
« Réponse #6 le: 04 février 2014 à 08:57 »
j'ai moi aussi testé sous mon 2500k : pas encore fini mais au lieu de mettre 2h20 ca devrait mettre 1h30 environ soit 40 % de gain de vitesse effectivement.

Oncle Bob

  • Modérateur
  • Messages: 3274
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : [FAQ] Optimisation Calcul CPU - AVX
« Réponse #7 le: 04 mars 2014 à 00:51 »
Drapal, mes procs (E3-1260L & i7-2600K) gèrent l'AVX.
Boincstat
Projets du moment
Config principale : i7 2600K@4,2 GHz / 16 Go@1600 MHz / GT 1030 (Win 7)
Crunchbox passives : i7-4785T / 8 Go@1600 MHz / Akasa Euler S (Win 7) || i3-4130T / 4 Go@1600 MHz / Akasa Euler (Debian)
ARM : 3*H3 + 1*S905X + 1*S912
Boinc@Raspberry Pi | Boinc et Linux | Date fin de projets

procrastinator

  • Messages: 67
  • Boinc'eur Junior
  • **
  •   
    • To stupidity, and beyond !
Re : [FAQ] Optimisation Calcul CPU - AVX
« Réponse #8 le: 04 août 2014 à 17:11 »
Merci pour ces informations.
J'ai désactivé l'hyperthreading de ma machine de course, ce qui conduit à une diminution de température des coeurs de vingt degrés, soit l'objectif secondaire recherché. Aucun changement dans le temps d'exécution des unités Milkyway (sans rapport avec AVX, mais on ne sait jamais où un effet de bord peut se nicher)
:yaya:
J'ai également configuré le bazar pour qu'il traite uniquement des unités Asteroids AVX, je reviendrai quand j'aurai les résultats.
Toi qui cliques ici, abandonne tout esprit de sérieux.

Crunchbang Linux 64 bits, Intel i3770 (HT désactivé), ATI HD7970


procrastinator

  • Messages: 67
  • Boinc'eur Junior
  • **
  •   
    • To stupidity, and beyond !
Re : [FAQ] Optimisation Calcul CPU - AVX
« Réponse #9 le: 09 août 2014 à 09:59 »
Bon, rien de transcendant : en gros je suis passé de 8 threads SSE2 en deux heures à 4 threads AVX en 1h30.
Pas sûr que l'AVX change quoi que ce soit, il faudrait creuser plus.
En tout cas, le processeur chauffe moins, je reste dans cette configuration.

Citer
Sur Asteroids, je ne fais plus tourner que les SSE3 sur i7 4770K et SSE2 sur i7 2670QM
Surtout pour WuProp ;) et car les gains de temps sont relativement limité, c'est vrai.

Par contre, sur PrimeGrid, toutes les UT's CPU sont à présent disponible (automatiquement) en AVX2 !

Et sur ce projet, les gains en terme de points et de temps sont beaucoup plus conséquents en HT OFF

Par contre, ça chauffe assez fort => faut un très bon refroidissement.
« Modifié: 30 mai 2015 à 12:07 par LOCTET SetiOne »
Toi qui cliques ici, abandonne tout esprit de sérieux.

Crunchbang Linux 64 bits, Intel i3770 (HT désactivé), ATI HD7970


toTOW

  • Messages: 3391
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : [FAQ] Optimisation Calcul CPU - AVX
« Réponse #10 le: 09 septembre 2014 à 14:15 »
Phil1966> y'a moyen de savoir si les applications que l'on a (sur PrimeGrid) font de l'AVX ou non ?

Citer
Je pense que le système détecte automatiquement les capacités CPU.

Mais je peux vérifier.

(Je n'ai jamais essayé d'app_info sur ce projet ...)

Il y a quelques mois, toutes les applications LLR sont passées en AVX2 / FMA3 ou quelque chose du genre =>
Il faut privilégier HT OFF, sinon ça chauffe beaucoup trop et on "perd du temps" (façon de parler)
Si le CPU n'a pas les fonctions AVX, AVX2, FMA etc je suppose que les LLR tournent en SSE3/SSE2.

NB : Une des raisons pour lesquelles nous avons choisi une application CPU SIEVE pour le RAID est qu'elle ne sollicite pas autant les CPU, et qu'elle tourne très bien HT ON.

Voir : http://forum.boinc-af.org/index.php/topic,2184.msg385318.html#msg385318
« Modifié: 30 mai 2015 à 12:09 par LOCTET SetiOne »
FAH-Addict, première source d'information francophone sur le projet Folding@Home.

Oncle Bob

  • Modérateur
  • Messages: 3274
  • Boinc'eur devant l'éternel
  • *****
  •   
Re : [FAQ] Optimisation Calcul CPU - AVX
« Réponse #11 le: 12 décembre 2014 à 10:40 »
:hello:

On a une liste des applis AVX (et/ou AVX 2.0) ?
Boincstat
Projets du moment
Config principale : i7 2600K@4,2 GHz / 16 Go@1600 MHz / GT 1030 (Win 7)
Crunchbox passives : i7-4785T / 8 Go@1600 MHz / Akasa Euler S (Win 7) || i3-4130T / 4 Go@1600 MHz / Akasa Euler (Debian)
ARM : 3*H3 + 1*S905X + 1*S912
Boinc@Raspberry Pi | Boinc et Linux | Date fin de projets