Processeurs multi-coeurs

Démarré par archi_91, Décembre 05, 2016, 09:53:30

« précédent - suivant »

archi_91

Bonjour,
A l'heure de rénover mon PC sous windaube 7, je me pose la question du processeur :
Pour des tris de photos sous VNX2 et traitements sous LR ou PS, j'ai cru comprendre que la fréquence avait plus d'importance que le nombre de coeurs, qui ne seraient pas utilisés sous ces logiciels, avec un I7.
Merci d'avance.
Mithridatisé pour les claviers

Nicolas Meunier

Citation de: archi_91 le Décembre 05, 2016, 09:53:30
Bonjour,
A l'heure de rénover mon PC sous windaube 7, je me pose la question du processeur :
Pour des tris de photos sous VNX2 et traitements sous LR ou PS, j'ai cru comprendre que la fréquence avait plus d'importance que le nombre de coeurs, qui ne seraient pas utilisés sous ces logiciels, avec un I7.
Merci d'avance.

Il faut nuancer ce que tu dis. Il y a bien longtemps LR ne savait utiliser que un coeur et donc seul la frequence était utile, ce n'est plus le cas, mais cependant quitte à choisir la frequence est le facteur le plus important. Il y a bien un intérêt à avoir un i7 rapide désormais, par contre un Xeon avec 8 coeurs ou plus non.

baséli

Citation de: archi_91 le Décembre 05, 2016, 09:53:30
Pour des tris de photos sous VNX2 et traitements sous LR ou PS, j'ai cru comprendre que la fréquence avait plus d'importance que le nombre de coeurs, qui ne seraient pas utilisés sous ces logiciels, avec un I7.

La réalité est plus subtile que ça. Il y a des algorithmes qui ne sont pas découpables sur plusieurs cœurs, d'autres qui le sont en théorie et ce n'est pas fait en pratique, d'autres qui le sont sur un nombre limité de cœurs, d'autres encore qui le sont sur des centaines ou des milliers ou même tant que tu veux (d'où les 10 millions de cœurs du dernier supercalculateur chinois).

Quand tu ne sais pas, ce qui est ton cas (et un peu le mien  ;)), il est raisonnable de choisir un i7 4 cœurs. Même si ton logiciel ne les utilise pas tous, pendant qu'il bosse, tu fais autre chose avec les autres cœurs sans pénaliser le temps d'exécution de ta tâche de fond. Mais plus que ça comme signalé plus haut, ce n'est pas nécessaire.

Et de toutes façons, même un algorithme bien codé qui tourne sur 4 cœurs n'ira pas 4 fois plus vite que s'il tourne sur un seul: il y a du boulot pour synchroniser tout ça et ce n'est pas gratuit.

kochka

Réponse officielle de DXO: nous utilisons tous les cœurs. .
Pour être passé, il y a trois quatre ans d'un dual-core à une quad, j'ai vu la différence.
Processeur I7 3770K à 3,5 Gh et 16G de ram.
Avec le gestionnaire de taches, tu vois tous les cœurs, réel et virtuels, fonctionner et pas qu'un peu.
C'est facile à vérifier sur un PC.
La prochaine maj du PC le fera passe à 6 et peut-être huit cœurs réels.
Technophile Père Siffleur

baséli

Citation de: kochka le Décembre 05, 2016, 14:42:08
La prochaine maj du PC le fera passe à 6 et peut-être huit cœurs réels.

Quand je dis "pas nécessaire", je pense en fait que le rapport performance/prix descend en dessous de l'acceptable pour un particulier lambda. Vue la fin de la loi de Moore, il est clair que l'augmentation de la vitesse de calcul passera par la parallélisation, que ce soit dans les CPU ou dans les GPU. Intel s'est déjà lancé là dedans avec les Xeon Phi...

kochka

Sans "faire la course", comme dit mon dealer "chinois", chacun a son point optimum : intérêt des perf marginales vs augmentation marginale du prix.
La difficulté vient lorsque l'on compare entre elles, deux technique d'augmentation des perf.
Technophile Père Siffleur

bg1000

Bonjour

J'ai un hexacoeur de chez AMD, et ils travaille à fonds lors des exportations.
Par contre difficile de choisir une carte graphique pour épauler DXO.
Pour LR il faudrait que je regarde.
BG


Bob74

Citation de: baséli le Décembre 05, 2016, 15:58:51
Quand je dis "pas nécessaire", je pense en fait que le rapport performance/prix descend en dessous de l'acceptable pour un particulier lambda. Vue la fin de la loi de Moore, il est clair que l'augmentation de la vitesse de calcul passera par la parallélisation, que ce soit dans les CPU ou dans les GPU. Intel s'est déjà lancé là dedans avec les Xeon Phi...

Il serait bien d'attendre le début de l'an prochain (Q1 2017) car AMD doit sortir de nouveaux CPU "Zen" (multicoeurs, jusqu'à 16 ?) qui ne seraient pas mal du tout et, aurait un rapport performance / prix bien supérieur à ceux d'Intel.

La présentation des nouveaux CPU a lieu le 13 décembre 2016 et, d'ici là, nous en saurons beaucoup plus.
Pour celui qui veut changer, il est donc urgent d'attendre.

xcomm

OM-Sys E-5 E-M1X E-M10III 1s

Bob74

Citation de: xcomm le Décembre 06, 2016, 22:43:58
http://www.amd.com/en-us/innovations/new-horizon pour voir la présentation.

Je n'arrive pas à ouvrir le lien. Il y a un problème ou sur le lien ou plutôt avec le site AMD très long à ouvrir la page demandée.

http://www.amd.com/fr-fr

http://www.amd.com/fr-fr/innovations/new-horizon


Franciscus Corvinus

Citation de: archi_91 le Décembre 05, 2016, 09:53:30
Bonjour,
A l'heure de rénover mon PC sous windaube 7, je me pose la question du processeur :
Pour des tris de photos sous VNX2 et traitements sous LR ou PS, j'ai cru comprendre que la fréquence avait plus d'importance que le nombre de coeurs, qui ne seraient pas utilisés sous ces logiciels, avec un I7.
Merci d'avance.
La question pour moi serait plutot sur quel horizon tu utilisera ton achat? Si c'est assez long, il est probable que tu changeras de logiciel et que celui que tu auras exploitera les multi-coeur correctement. Non seulement ca, mais ton appareil pourrait aussi avoir le double de pixels.

Bref, si tu gardes ton matos information longtemps, je soupconne que le 4 coeur (au moins) fait du sens.

Et puis il y a toujours l'overclocking si tu aimes l'adrénaline (et les reboots intempestifs  :P Blague, évidemment).

kochka

Citation de: bg1000 le Décembre 06, 2016, 00:05:20
Bonjour

J'ai un hexacoeur de chez AMD, et ils travaille à fonds lors des exportations.
Par contre difficile de choisir une carte graphique pour épauler DXO.
Pour LR il faudrait que je regarde.
BG
Va sur le site de C.M et tu verras qu'il n'est aucun besoin de CG à 500 boules, avec DXO.
Technophile Père Siffleur

Nicolas Meunier

Citation de: kochka le Décembre 08, 2016, 19:04:08
Va sur le site de C.M et tu verras qu'il n'est aucun besoin de CG à 500 boules, avec DXO.

DXO dit lui même qu'il sait utiliser la CG, par contre ca dépend du type de traitement qu'on fait. Si par exemple on utilise le rendu le plus fin, il n'est optimisé que CPU, les autres fonctionnent aussi sur GPU et si si, ca sait tirer parti d'une carte graphique puissante.


kochka

je te crois, naturellement, mais la réponse de DXO, il y a peu,  me laisse sur ma faim. Dommage qu'il n'orientent pas un peu plus les utilisateurs.
Le logiciel utilise tous les coeurs disponibles.
Par contre plus on utilise de coeurs plus on utilise de RAM, donc nous vous conseillons 16 Go de RAM pour une config à base de CPU 6 ou 8 coeurs.
PRIME ne fonctionne pas sur les ressources de la carte graphique. Il n'utilise que le processeur.
Nous ne faisons pas de benchmark sur les cartes graphiques et nous en pouvons vous recommander un modèle ou une marque plutôt qu'une autre.
Cordialement
Cécile - DxO Customer Support
Technophile Père Siffleur

Bob74

C'est vrai que pour la photo (ou vidéo) il n'est actuellement pas nécessaire d'avoir une carte "gaming".
Un carte à +/- 200 € peut largement suffire.
En choix il n'y a pas que nVidia et ses tarifs un peu démentiels.

Chez AMD, le fondeur concurrent, un modèle pas mal est la RX470-8Go de VRAM.

Même une RX460-4Go, moins chère encore, s'avère suffisante.

Nicolas Meunier

Citation de: Bob74 le Décembre 09, 2016, 15:16:51
C'est vrai que pour la photo (ou vidéo) il n'est actuellement pas nécessaire d'avoir une carte "gaming".
Un carte à +/- 200 € peut largement suffire.
En choix il n'y a pas que nVidia et ses tarifs un peu démentiels.

Chez AMD, le fondeur concurrent, un modèle pas mal est la RX470-8Go de VRAM.

Même une RX460-4Go, moins chère encore, s'avère suffisante.


le soucis c'est que si le soft est optimisé CUDA, ca ne marche QUE avec une carte NVIDIA.

Enfin ton affirmation est incompléte:
C'est vrai que pour la photo (ou vidéo) il n'est actuellement pas nécessaire d'avoir une carte "gaming".... SI on est amateur avec un flux de travail simple.

Pour rappel un banc de montage video pro ca a 3 ou 4 cartes graphiques haut de gamme. Un PC de retouche photo intensif en a une.

Samoreen

#16
Il me semble que dans cette discussion, on oublie un point essentiel. Un processeur multi-cœurs permet à plusieurs fils d'exécution de travailler en vraie simultanéité (exécution en vrai parallélisme) alors qu'un processeur mono-cœur "sérialise" les fils d'exécution (quelques micro-secondes à l'un, quelques microsecondes au suivant,... suivant une priorisation finement calculée).

On semble supposer ici que tous les fils appartiennent nécessairement au même processus. Le système de dispatching des fils d'exécution sur les différents cœurs ne se préoccupe pas de ça. Les fils d'exécution travaillant en parallèle peuvent appartenir à des processus différents. Le seul critère d'activation d'un fil d'exécution est son niveau de priorité (calculé en partie à partir du niveau de priorité du processus auquel il appartient).

Donc, même si une application utilise peu, mal ou pas du tout tous les cœurs du système, on bénéficiera le plus souvent d'une amélioration des performances globales car 2 fils appartenant à 2 applications différentes pourront s'exécuter de manière réellement concurrente.

Toutefois, tous les traitements ne bénéficieront pas nécessairement d'une amélioration de performances par la multiplication des fils d'exécution et pas seulement pour la raison évoquée plus haut par Baséli (la nécessité de synchroniser). En effet, sur un cœur donné, quand le dispatcheur arrête l'exécution d'un fil pour passer la main au suivant, une opération particulière est nécessaire : le "context switching". Il faut sauvegarder l'état du fil courant et restaurer, pour le fil qui va être activé, l'état dans lequel il se trouvait au moment où il a été interrompu pour la dernière fois. Cette opération n'est pas gratuite non plus et il arrive un moment où, globalement pour le système, le coût de l'ensemble des "context switchings" absorbe le bénéfice généré par la multiplication des fils (ou dit autrement, le système va commencer à passer plus de temps à passer d'un fil à l'autre qu'à produire effectivement un traitement utile).

Devant les problèmes que ça pose (ajoutés aux problèmes de codage liés à la synchronisation des fils et signalés par Baséli), certains développeurs préfèrent limiter le nombre de fils créés.

Pour une machine dont l'activité principale est l'utilisation de LR ou de PS ou autre logiciel similaire sans tâche fond lourde tournant en arrière-plan, la multiplication du nombre de cœur sera le plus souvent inutile. Le compromis pour un i7 à 4 cœurs est probablement le meilleur choix.

Patrick

baséli

Sans compter qu'un fournisseur de logiciels ne va pas se faire suer à développer un algorithme qui serait optimal sur de très nombreux cœurs quand 99,99% de ses clients ont un processeur à 2 ou 4 cœurs sur lesquels cet algorithme serait moins efficace qu'un autre qui partage les tâches en deux ou quatre.

Bref c'est compliqué dès qu'on creuse un peu le sujet, quand on ne connaît pas et qu'on a un peu les moyens financiers, il faut prendre le haut de gamme du "mainstream" et se garder du reste.

Comme je disais au dessus: 4 cœurs c'est bien, plus c'est généralement trop cher. Et si on connaît le sujet, on ne lit pas ce fil sur CI car on sait que choisir  :D Donc 4.

kochka

Il suffit de regarder les graphiques d'utilisation des cœurs pendant un traitement pour voir qu'avec DXO, les 8 cœur (4 réels et 4 virtuels), sont utilisés plein pot
Je ne sais pas encore combien il y aura à gagner à en passant à 6 réels, ou 8? Mais il y a certainement à gagner quelque chose. Reste à savoir si le jeu en vaut la chandelle. Mais c'est une autre histoire.
Technophile Père Siffleur

baséli

Citation de: kochka le Décembre 12, 2016, 18:51:23
Reste à savoir si le jeu en vaut la chandelle. Mais c'est une autre histoire.

C'est justement ça la question initiale :-)

kochka

Quant les quatre sont saturés en mode turbo sur DXO, on peut être certain que des cœurs supplémentaires seront utilisés.
Reste à connaitre le rapport vitesse marginale /surcoût de prix.
Il y a toujours la solution de prendre un 6 coeurs de l'ancienne génération à 360€.
Pour la nouvelle génération les prix explosent vite:
6800, 6c: 435€
6900, 8c : 999€
6950, 10c:1600€
Ou encore attendre lorsque c'est possible que le marché commence à saturer. Le 6900 a déjà baissé de 150€
Mais nous sommes loin de la question in initiale.
Technophile Père Siffleur

Nicolas Meunier

le point important : quand on monte le nombre de coeur, on doit baisser la frequence de chacun, donc c'est pas simple de trouver l'optimum.

En retouche photo ajd c'estplutot vers 4-6 coeurs alors que en traitement videos c'est quasiment le plus grand nombre de coeurs qui gagne.

kochka

Dommage qu'il n'existe pas de test sur ce plan, par les fournisseurs de dérawtiseurs.
Technophile Père Siffleur

xcomm

AMD présente Ryzen
- 8 cœurs / 16 thread
-  [at]  3.4GHz + boost
- réseau neuronale prédictif, optimisation puissance en tous genres.

Trouvé à l'instant sur le Web :
http://www.comptoir-hardware.com/actus/processeurs/33043-ryzen-serait-le-premier-processeur-zen-grand-public-damd.html
OM-Sys E-5 E-M1X E-M10III 1s

fantec

Citation de: Samoreen le Décembre 12, 2016, 15:20:57
Il me semble que dans cette discussion, on oublie un point essentiel. Un processeur multi-cœurs permet à plusieurs fils d'exécution de travailler en vraie simultanéité (exécution en vrai parallélisme) alors qu'un processeur mono-cœur "sérialise" les fils d'exécution (quelques micro-secondes à l'un, quelques microsecondes au suivant,... suivant une priorisation finement calculée).

Qu'un PC soit mono-proc mono-cœur, multi-proc mono-cœur, multi-proc multi-cœurs ou mono-proc multi-cœurs, un kernel préemptif ne change pas son comportement. Les taches sont lancés pour un certain lapse de temps avant que le kernel ne récupère la main. La seule différence est qu'on aura plus de ressources CPU disponibles et qu'on pourra lancer plusieurs processus simultanément (mais toujours pour ce lapse de temps). Par ailleurs, on parle plutôt de quelques millisecondes que de microsecondes (à l'exception probable des kernels temps réels).

Maintenant, sur un PC "mono-utilisateur", il n'y a généralement guère qu'un seul processus réellement consommateur de CPU (là, j'ai youtube en tache de fond mais firefox ne bouffe guère que 4% des ressources CPU).

CitationOn semble supposer ici que tous les fils appartiennent nécessairement au même processus. Le système de dispatching des fils d'exécution sur les différents cœurs ne se préoccupe pas de ça. Les fils d'exécution travaillant en parallèle peuvent appartenir à des processus différents. Le seul critère d'activation d'un fil d'exécution est son niveau de priorité (calculé en partie à partir du niveau de priorité du processus auquel il appartient).

Les algorithmes des ordonnanceur sont généralement plus compliqués que cela et tiennent généralement compte de l'architecture de l'ordinateur. Selon que le bus mémoire est attachée à un CPU (on privilégie l'exécution sur le CPU contrôlant la mémoire du processus), qu'il existe des caches mémoires sur le processeur (on privilégie l'exécution des différents threads d'un même processus sur un même processeur) ou sur le cœur (idem mais sur un même cœur), etc.

CitationToutefois, tous les traitements ne bénéficieront pas nécessairement d'une amélioration de performances par la multiplication des fils d'exécution et pas seulement pour la raison évoquée plus haut par Baséli (la nécessité de synchroniser). En effet, sur un cœur donné, quand le dispatcheur arrête l'exécution d'un fil pour passer la main au suivant, une opération particulière est nécessaire : le "context switching". Il faut sauvegarder l'état du fil courant et restaurer, pour le fil qui va être activé, l'état dans lequel il se trouvait au moment où il a été interrompu pour la dernière fois. Cette opération n'est pas gratuite non plus et il arrive un moment où, globalement pour le système, le coût de l'ensemble des "context switchings" absorbe le bénéfice généré par la multiplication des fils (ou dit autrement, le système va commencer à passer plus de temps à passer d'un fil à l'autre qu'à produire effectivement un traitement utile).

Je suis un peu dubitatif. Ce que tu présentes pourrait correspondre à un kernel qui allouerait un "time slice" inversement proportionnel au nombre de processus. En général, il est défini une granularité en dessous de laquelle on ne descend pas. Dans ce cas, l'inefficacité se stabilise à (temps du context-switching/granularité).

CitationDevant les problèmes que ça pose (ajoutés aux problèmes de codage liés à la synchronisation des fils et signalés par Baséli), certains développeurs préfèrent limiter le nombre de fils créés.

Il y a aussi les problèmes de bande passante mémoire, de cohérence de cache mémoire (géré au niveau CPU) mais surtout les problèmes de verrouillage inter-thread (géré au niveau applicatif, plus on a de threads qui accèdent aux mêmes donnés et plus on augmente le risque d'avoir des accès concurrentiels aux mêmes données et d'avoir à attendre d'obtenir un accès exclusif à une donnée). C'est ce dernier point qui pose le plus de problèmes (et d'inefficacité).

CitationPour une machine dont l'activité principale est l'utilisation de LR ou de PS ou autre logiciel similaire sans tâche fond lourde tournant en arrière-plan, la multiplication du nombre de cœur sera le plus souvent inutile. Le compromis pour un i7 à 4 cœurs est probablement le meilleur choix.

Là, ça dépend essentiellement des logiciels utilisés. Les dernières fois que j'ai utilisé Autopano Giga sur un projet d'une cinquantaine de photos (sur un bi-xeon quad-core hyperthreadé), certaines parties des traitements semblaient pleinement tirer partie des 16 pseudos cœurs présents.