bonjour , j'arrive pas a faire la difference entre nombre de coeurs et le nombre de threads sur un composant electronique .
Si quelqu'un pourrait m'eclaircir la difference .
merci
-----
bonjour , j'arrive pas a faire la difference entre nombre de coeurs et le nombre de threads sur un composant electronique .
Si quelqu'un pourrait m'eclaircir la difference .
merci
Bonjour,
Nombre de coeur n = nombre de puces de silicium *. C'est fixé lors de la fabrication du processeur, par exemple 8.
Nombre de thread p = nombre de morceaux de programmes concurrents, supposés tourner simultanément sur un processeur. p peut être < n, dans ce cas n-p coeurs sont au repos. Mais on peut aussi avoir p>n, et dans ce cas la répartition des threads entre les processeurs tourne : pendant les premières 500ms les thread 1 à n sont actifs puis pendant les 500ms suivantes les threads p-n à p sont actifs, puis....
Lorsque la machine est éteinte, le nombre de coeur garde sa valeur (par exemple 8) mais le nombre de threads est nul (aucun programme ne tourne).
* : façon de parler : on peut intégrer plusieurs coeurs sur une unique puce de silicium.
Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.
Bonjour,
le nombre de thread c'est le nombre d'applications concurrentes, c'est obtenu séquentiellement par time sharing (partage du temps CPU ordonnancé par l'OS), à ma connaissance le vrai parallélisme par allocation sur les différent coeurs (toujours par l'OS) n'est pas compté.
Sur un multicoeur il y aura donc à la fois du threading et du parallélisme vrai.
Le piège est que de nombreuse applications ne sont pas intrinsèquement parallélisables et que quelque soit le nombre de cœurs elles ne peuvent tourner que sur un seul et donc leur nombre n'influera absolument pas sur les performances, d'autres parallélisables sont tellement mal foutues que leur mise en // explose la mémoire, mais c'est le prix à payer pour des logiciels grand public portables.
pour des infos plus complete partir de la page Wiki:http://fr.wikipedia.org/wiki/Thread_%28informatique%29.
JR
l'électronique c'est pas du vaudou!
merci pour vos réponses , si j'ai bien compris pour 1 processeur on peut avoir n coeurs et sur chaque coeur 1 ou plusieur thread peuvent tourner ?
le but est de pouvoir faire tout en parallele donc faire fonctionner tous les coeurs ??
est ce que le parallellisme veut dire faire fonctionner tous les coeurs en parallele ou c'est le fait de lancer une application qui peut tourner sur plusieurs processeur ?
Bonsoir,
Oui, mais à chaque instant, seulement 1 thread peut tourner sur un coeur (il ne peut pas faire deux choses à la fois). On peut faire croire à l'utilisateur que plusieurs thread tournent simultanément en les faisant tourner l'un après l'autre et en passant de l'un à l'autre à "haute" fréquence. Mais, ainsi, la vitesse moyenne d'exécution de chaque thread sera (évidemment) inférieure à celle qu'on aurait si un seul thread tournait sur le coeur.
Se serait l'idéal, mais dans la pratique, c'est difficile.le but est de pouvoir faire tout en parallele donc faire fonctionner tous les coeurs ??
Paralléliser un truc c'est le diviser en plusieurs sous-trucs et, au lieu de les éxécuter l'un après l'autre, les exécuter simultanément sur plusieurs coeurs.
Un "truc" = un ensemble de taches, e.g. une ou plusieurs applications.
Un sous-truc = un thread ou ensemble de threads.
Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.
Bonsoir,
en fait les deux possibilités existent bien que la seconde (une même tache repartie sur plus d'un processeur) est plus rare car il faut que le logiciel ait été conçu dans ce but.
Bien sur tout ceci suppose une gestion très intelligente de la mémoire RAM et des caches en particulier.
De tous les logiciels que j'ai pu utiliser un seul exploitait vraiment le // : Quartus II.
JR
Dernière modification par jiherve ; 21/03/2015 à 18h42.
l'électronique c'est pas du vaudou!
Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.
Re
Ach bonne question.
En fait c'est indiqué dans la doc et il existe un paramètre à renseigner (compilation process settings dans QII V9)qui défini le nombre de coeurs max utilisables, cela peut etre moins que le nombre de coeurs physiques ceci afin de conserver un peu de puissance pour faire autre chose pendant les quelques heures que nécessite la compilation d'un FPGA de grandes personnes .
Et justement là avec un design un peu sérieux (environ 250K ALM) et une machine multicoeurs mais avec un OS 32 bits donc environ 4GO de mémoire exploitable on peut tres bien récupérer "out of memory" durant la compilation en // et arriver à passer, mais plus lentement bien sur, en compilation standard, du vécu!!
JR
l'électronique c'est pas du vaudou!
bonjour , merci pour les réponses qui sont bien expliqué , est ce qu'il y a une difference entre thread mutitheread hyperthread ?
sur certains pc on peut voir que dans leurs configuration , ils sont doté de 4 thread ? cela veut dire quoi exactement ? peut être tous les porgrammes peuvent juste utiliser 4 threads ?
est ce qu'on peut avoir 2 processeurs avec 2 coeurs chacun ? ou plus !
c'est quoi la difference entre 32 et 64 bits quand on parle d'architecture ?
Salut,
Windows CreateThread, un régal
https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx
Jamais vraiment réussi à créé un thread fiable.
Biname
Bonsoir,
En fait il y a très longtemps une boite géniale avait inventé un processeur naturellement adapté au parallélisme, soit par time sharing (avec OS en partie hardware) soit par mise en // physique et avec un langage adapté(OCCAM) , cette boite c’était Inmos et le processeur le Transputer , nous ne fumes que quelques centaines (dizaines ?) à y croire et à maitriser la bête, des milliers d'autres se jetaient alors tête baissée sur les 80K ou les 68K. Depuis on redécouvre!
Il existe des processeurs comportant plusieurs dizaines de cœurs, surtout orienté graphique(shader) en processeur général 4 c'est courant, 8 fréquent et on peu aller plus loin.
32 ou 64 bits cela défini le plus souvent la capacité d'adressage intrinsèque , mais beaucoup de processeur 64 bits sont utilisé en 32 bits pour des raisons économiques.
JR
l'électronique c'est pas du vaudou!
Quand intel te vend un proc "hyperthreadé", par exemple un core i7 avec 4 core et 8 threads, ça n'a rien à voir avec les threads évoquées ci-dessus. Il aurait mieux valu appeler ça autrement...
Bref, en fait le core i7 en question a 8 cores, mais pas vraiment. Ils vont par deux, et chaque paire a des éléments partagées avec l'autre. Donc ce qu'ils appellent "threads" c'est plutôt des demi-cores... donc on aurait 4 cores bicéphales, ou 8 demi-cores.
Pour simplifier, prenons un proc à un seul core. Mettons que ce core soit en train de faire des additions par exemple. On peut noter qu'à ce moment là, l'unité de multiplication se tourne les pouces. Donc si on avait deux demi-cores ayant chacun son propre décodage d'instructions (et autres bouts de logistique) mais partageant une bonne partie des circuits d'exécution des instructions (alu, fpu, calcul vectoriel, etc), alors on pourrait mieux utiliser ces circuits, ils seraient inactifs moins longtemps, puisqu'ils devraient travailler pour deux "patrons" en même temps au lieu d'un seul.
C'est un compromis, c'est moins cher que des vrais cores. Des fois ça marche bien, des fois non.
jherve : Le inmos a ressuscité via xmos. Le concept est sympa mais je ne suis pas trop fan de l'implémentation. Enfin, ça devrait revenir à la mode, puisque des processus indépendants communiquant via des FIFO est à peu près la seule façon de faire quelque chose de massivement parallèle sans prise de tête monstrueuse ou grosse perte de performances. D'ailleurs l'architecture de google est, grosso modo, un transputer, sauf que les noeuds sont des PC...
Dernière modification par bobflux ; 21/03/2015 à 22h22.
Re
Oui je connais Xmos.
Pour l’architecture des proc INTEl, c'est aussi vieux que les DSP , le T800 fonctionnait aussi déjà comme çà entre la partie entière et la FPU de même que la première UC série à laquelle je me suis frotté en 73, la difficulté c'est de pondre soit un compilo soit un ordonnanceur hard qui rende la chose transparente, car la gestion manuelle est fastidieuse.
JR
l'électronique c'est pas du vaudou!
donc quand vous dites i7 c'est tout simplement un processeur avec la capacité d'heberger 8 cores , donc on parle bien de 1 processeur ?
C'est un processeur (ie, un composant physique) avec 4 cores "hyperthreadés", c'est-à-dire que chaque core peut faire 2 choses en même temps, tant que ces opérations n'utilisent pas le même matériel, puisque celui-ci est partagé.
C'est un peu comme si tu avais 8 cores, mais groupés par paire, avec des ressources en commun.
ok je vois , le cas ideal ca serait que les 8 cores ( 4 hyperthreadé) travaillent en parallèle donc chaque coeur fait tourner un bout de code ou un processus , est ce que dans ce cas la , si les 8 coeurs travaillent cela impliquera que le proesseur utilise sa fréquence max ?