akizan a écrit :
Exemple : benchmark multi core Hyper Pi 0.99
Pour moi, ça démontre clairement que basculer une application sur un seul processeur, c'est plus rapide que d'utiliser le multi core dans le cas ou l'application n'utilise pas les possibilités multi core évidemment.
Qu'en pensez-vous ?
|
Ton test est faussé, dans la mesure ou dans ton exemple, au premier test tu as effectué une seule fois le calcul, et dans le second test tu l'as effectué 4 fois. Si tu veux faire un vrai test, il te faut lancer SuperPi avec 4 threads, et la première fois laisser Windows placer les threads, la seconde forcer leur affinité sur certains CPU. Tu te rendras compte alors que le placement manuel aura très probablement dégradé les perfs.
Tu confonds deux choses : le fait qu'une application soit monothreadée ou multithreadée, ce qui est purement du choix du concepteur, tu n'as généralement pas la main dessus, et la deuxième chose qui est le placement des threads sur le CPU.
Si une application est monothread, tu n'as pas le choix, elle sera sur un seul CPU. Si une application est multithread, il sera dans 99,999% des cas plus rapide de laisser le kernel Windows placer les processus sur les différents cores, car il le fera de façon à optimiser le plus possible.
Quand au fait que 4 instances de SuperPi prennent plus de temps qu'une seule, c'est normal. Une appli multithreadée nécessite toujours un certain travail supplémentaire (il faut envoyer des données 4 fois au lieu d'une seule + la synchronisation des threads et toutes les tâches afférentes).
Message édité par ccp6128 le 24-02-2012 à 16:04:25