TL; DR: Je fais des calculs de performance, et j’ai constaté que la machine apparemment plus «faible» surpasse de beaucoup la machine «plus forte». Pourquoi?
J'ai écrit du code C pour un projet. Il implique 10 000 itérations d'un long processus qui génère des données pseudo-aléatoires et, après chaque itération, les écrit dans un fichier. j'ai utilisé #pragma omp parallel for
multi-thread la tâche.
Je peux exécuter mon programme sur deux machines: appelons-les s et ré . Voici les spécifications pertinentes (s'il vous plaît demander d'autres spécifications qui pourraient avoir de l'importance):
- s : Linux Mint 15, SSD Samsung 840 EVO, 8 Go de RAM, processeur Intel i3 quad-core à 2,40 gHZ
- ré : Linux Mint 16, SSD Intel, 8 Go de RAM, processeur AMD FX-8320 à huit cœurs à 3,5 gHz
Voici la grande surprise: s termine la tâche un ordre de grandeur plus rapide que ré . J'ai exécuté le programme à quelques reprises sur les deux machines et s termine la tâche en environ 3-4 minutes, alors que ré prend entre 12 et 30 minutes (j'ai perdu la notion du temps). Tous les deux épuisent complètement leurs cœurs (c’est-à-dire tous les cœurs à 100%) pendant l’informatique. Ce phénomène est même avec des programmes auxiliaires (Firefox, etc.) ouverts sur s et rien d'autre en cours d'exécution ré .
Mais le code est le même. Les drapeaux du compilateur sont les mêmes. Même la sortie est la même. J'ai même retiré les disques des deux s et ré , et les échangé, puis réexécuta le programme, histoire de vérifier qu’il n’était en aucun cas lié au système d’exploitation. Le phénomène a persisté: le processeur quad-core 2,4 GHz a largement dépassé le processeur huit cœurs 3,5 GHz.
Ceci est, bien sûr, vraiment déroutant et totalement contre-intuitif. Quelqu'un peut-il me dire ce qui se passe?
la source
Réponses:
Vous parlez du mythe Megahertz, un chiffre plus grand ne signifie pas toujours meilleur, car la vitesse de calcul dépend des facteurs d'architecture et de conception. Voici une belle page Web sur la question.
la source