Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Prise en compte de l'hyperthread par les applis

3 réponses
Avatar
Sergio
J'ai un P4 hyperthread. Et j'essaye d'évaluer les logiciels d'encodage
DivX (mais ce pourrait être autre chose...) sous XP.

Question : quand en encodage le taux d'occupation processeur est
supérieur à 50% (genre 70%), c'est que le truc est mieux programmé que
si il décolle à peine du 50% ?

--
Serge http://leserged.online.fr/
Tout sur Windows : http://www.bellamyjc.org/ et http://www.ntfaqfr.com/

3 réponses

Avatar
Dominique Vaufreydaz
Bonjour,

Sergio wrote:
J'ai un P4 hyperthread. Et j'essaye d'évaluer les logiciels d'encodage
DivX (mais ce pourrait être autre chose...) sous XP.
Question : quand en encodage le taux d'occupation processeur est
supérieur à 50% (genre 70%), c'est que le truc est mieux programmé que
si il décolle à peine du 50% ?



Euh, non... Pas du tout.
Si c'est codé avec les pieds, tu peux avoir 80% du CPU pour obtenir
un resultats en plus de temps qu'avec un autre programme qui prends
70% du CPU.

J'ai deja epure des sources ou les mecs passait leur temps a faire
des copies de blocs memoires qui n'etait pas necessaires sachant
qu'en plus ils les allouait et desalouait a chaque fois...

Je ne suis pas sur que ta methode d'evaluation soit la bonne.
Ou j'ai pas compris...

Doms.
--
Impose ta chance, serre ton bonheur et va vers ton risque.
A te regarder, ils s'habitueront.
René Char, Les Matinaux.
----
http://Dominique.Vaufreydaz.free.fr/
http://TitchKaRa.free.fr/
http://logiciels.ntfaqfr.com/
Avatar
Sergio
Dominique Vaufreydaz a utilisé son clavier pour écrire :

Sergio wrote:
J'ai un P4 hyperthread. Et j'essaye d'évaluer les logiciels d'encodage
DivX (mais ce pourrait être autre chose...) sous XP.
Question : quand en encodage le taux d'occupation processeur est
supérieur à 50% (genre 70%), c'est que le truc est mieux programmé que
si il décolle à peine du 50% ?





Euh, non... Pas du tout.
Si c'est codé avec les pieds, tu peux avoir 80% du CPU pour obtenir
un resultats en plus de temps qu'avec un autre programme qui prends
70% du CPU.



Non. Un encodeur DivX en pleine action prendra (en monoprocesseur) 100%
du CPU. Qu'il soit codé avec les pieds ou pas. Il s'agit d'un pur
traitement logiciel.

Par contre, bien codé, il peut prendre en compte la présence de
plusieurs processeurs, et faire tourner les 2 processeurs en même
temps, dans 2 threads différents.

Sur un "vrai" biprocesseur, un programme multithread, utilisera les 2
processeurs, et occupera les CPU à près de 100%. Un programme
monothread ne les occupera qu'à 50% (en fait, il n'en utilisera qu'un).

Le problème de l'hyperthread, c'est que c'est du faux bi-processeur :
en gros, si un thread utilise l'unité flottante (par exemple) et un
autre l'unité SSE, ils pourront tourner en même temps. Par contre si
les 2 threads font dans le même type de traitement, polop, il n'y a
qu'une unité qui peut fonctionner !

Alors, le gestionnaire de tâche de XP, affiche 70% d'occupation pendant
un traitement, ça veut dire que les 2 processeurs logiques sont
occupés, mais est-ce efficace ? (puisqu'on fait du tratement
parrallèle)

--
Serge http://leserged.online.fr/
Tout sur Windows : http://www.bellamyjc.org/ et http://www.ntfaqfr.com/
Avatar
Dominique Vaufreydaz
Bonjour,

Non. Un encodeur DivX en pleine action prendra (en monoprocesseur) 100%
du CPU. Qu'il soit codé avec les pieds ou pas. Il s'agit d'un pur
traitement logiciel.



Je suis pas d'accord avec ca. J'ai un pur traitement logiciel qui fait
du traitement du signal (FFT et consors) et qui prend 75% du CPU. Juste parceque
je peux pas lire les données suffisante pour prendre plus. Avant,
avec une FFT pourrie (prise dans numerical recipies), j'avais 100%
et j'arrivait pas a suivre le flot de données. Mais la n'est pas
ton point...

Par contre, bien codé, il peut prendre en compte la présence de
plusieurs processeurs, et faire tourner les 2 processeurs en même
temps, dans 2 threads différents.



Ouai.

Sur un "vrai" biprocesseur, un programme multithread, utilisera les 2
processeurs, et occupera les CPU à près de 100%. Un programme
monothread ne les occupera qu'à 50% (en fait, il n'en utilisera qu'un).



toujours si arrive a feeder son programme avec ses données rapidement.
Si ton HD suit pas le rythme, t'aura beau avoir 4 CPU, t'auras pas 100%
partout.

Le problème de l'hyperthread, c'est que c'est du faux bi-processeur :
en gros, si un thread utilise l'unité flottante (par exemple) et un
autre l'unité SSE, ils pourront tourner en même temps. Par contre si
les 2 threads font dans le même type de traitement, polop, il n'y a
qu'une unité qui peut fonctionner !



Ouai mais ca tu peux pas prevoir parceque ca depends de l'odonanceur,
de ce qui tourne dans le systeme. Si ton applis voit que t'as l'hyperthreading
et qu'elle essaye de l'utiliser, ca veut pas dire qu'elle sera gagnante systematiquement
mais sur certains cycles ouai.

Alors, le gestionnaire de tâche de XP, affiche 70% d'occupation pendant
un traitement, ça veut dire que les 2 processeurs logiques sont
occupés, mais est-ce efficace ? (puisqu'on fait du tratement
parrallèle)



Je veux pas faire le penible, mais la question est contenu dans la
reponse. Le fait d'avoir l'hyperthreading te fait gagner 30% donc
c'est plus efficace. Maintenant, la question aussi c'est y'a-t-il plusieurs
threads dans ton applis ? Plus qu'en monoproc non multithread ?
Oui alors ton applie essaye de tirer partie de l'hyperthreading, si
non, alors c'est juste que ton P4 mouline mieux.

Ou alors, j'ai pas tout compris...

Doms.
--
Impose ta chance, serre ton bonheur et va vers ton risque.
A te regarder, ils s'habitueront.
René Char, Les Matinaux.
----
http://Dominique.Vaufreydaz.free.fr/
http://TitchKaRa.free.fr/
http://logiciels.ntfaqfr.com/