Considérez deux ordinateurs avec des configurations matérielles et logicielles différentes. Lorsque vous exécutez exactement le même code Navier-Stokes série sur chaque plate-forme, il faut x et y temps pour exécuter une itération pour l'ordinateur 1 et 2, respectivement. Dans ce cas, , est la différence de temps d'itération entre l'ordinateur 1 et l'ordinateur 2.
Quel pourrait être l'impact sur l'amplitude de ? Un candidat évident est le CPU, ma principale question est de savoir s'il existe d'autres facteurs qui pourraient avoir un impact sur dans le même ordre que la différence matérielle entre les CPU?
performance
iterative-method
navier-stokes
Oscillation isopycnale
la source
la source
Réponses:
Cette liste est loin d'être complète, mais j'espère que sa taille donnera une indication quant à l'échelle des facteurs possibles. Je suppose que vous compilez le code à partir des sources sur la plate-forme de votre choix.
Logiciel
Matériel
CPU
Mémoire
Disque dur
Tout cela ignore les petits trucs et fonctionnalités que différents fabricants incluent pour donner à leurs puces un avantage sur le marché. Le gros problème est que de nombreuses bibliothèques d'algèbre linéaire clairsemées sont liées à la mémoire. Faire une multiplication de matrice clairsemée implique beaucoup de données se déplaçant sans beaucoup de flops réels.
la source
-march=native
, ou l'option icc / ifort-xHOST
qui appliquera des optimisations spécifiques à l'architecture sous-jacente.Deuxièmement, votre question exclut spécifiquement les différences de logiciels. D'après mon expérience, les récompenses de performances pour un réglage soigneux peuvent être de grands facteurs, donc pendant que vous envisagez des problèmes matériels, n'oubliez pas les problèmes logiciels. Après tout, le matériel ne peut exécuter que les instructions que vous lui donnez, et si vous lui en donnez moins, il se terminera plus tôt.
Ne pas trop développer cela, mais pour tout problème donné, il existe une infinité de programmes dénombrables qui le résoudront. Parmi ceux-ci, certains prennent moins de temps que tous les autres, et c'est une limite inférieure. Ne présumez pas qu'un programme est à ou même près de cette limite inférieure s'il n'a pas été soigneusement réglé.
Ce lien explique en détail la méthode peu orthodoxe que j'utilise.
la source