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?