Comment déterminer le nombre de FLOP dont mon ordinateur est capable

15

Je voudrais déterminer le nombre théorique de FLOP (opérations en virgule flottante) que mon ordinateur peut effectuer. Quelqu'un pourrait m'aider avec ça. (Je voudrais comparer mon ordinateur à certains superordinateurs juste pour avoir une idée de la différence entre eux)

Ol 'Reliable
la source

Réponses:

9

Le pic théorique FLOP / s est donné par: Le nombre de coeurs est facile. La fréquence moyenne devrait, en théorie, prendre en compte une certaine quantité de Turbo Boost (Intel) ou Turbo Core (AMD), mais la fréquence de fonctionnement est une bonne limite inférieure. Les opérations par cycle dépendent de l'architecture et peuvent être difficiles à trouver (8 pour SandyBridge et IvyBridge, voir diapositive 26 ). C'est le sujet de cette question de débordement de pile , qui comprend des chiffres pour un tas d'architectures modernes.

Nombres de coeursFréquence moyenneOpérations par cycle
Max Hutchinson
la source
1
Ok, j'ai 2 cœurs, fréquence de fonctionnement: 1,8 GHz, technologie Intel Turbo Boost: 3,00 Ghz, je ne trouve pas les opérations par cycle, voici le site Web: ark.intel.com/products/75460/… merci
Ol 'Reliable
Haswell peut faire 16 DP / cycle. Je viens d'ajouter un lien dans le corps de la réponse à une réponse SO.
Max Hutchinson du
Est-ce à dire que mon ordinateur peut faire: 2 x 3 000 000 000 Hz x 16 = 96 Giga FLOP?
Ol 'Reliable
Cela signifie qu'il pourrait faire entre 2 * 1,8 GHz * 16 DP = 57,6 GFLOP / s et 96 GFLOP / s, selon la fréquence moyenne réelle. Si vous devez utiliser un seul numéro, 57,6 est le plus juste, l'OMI.
Max Hutchinson
2
Les taux FLOP sont généralement une mauvaise mesure de la «qualité» d'un processeur. Voir scicomp.stackexchange.com/questions/114/… par exemple. Vous voudrez peut-être réfléchir aux coûts limités de votre tâche (par exemple, lié au calcul vs lié à la mémoire vs lié au disque) et vous concentrer sur le matériel approprié (système de calcul, système de mémoire, E / S).
Max Hutchinson
4

Vous devrez connaître le modèle et le fournisseur des CPU de votre machine. Une fois que vous avez cela, vous pouvez rechercher sur le site Web du vendeur (ou peut-être sur Wikipedia) la fréquence d'horloge, le nombre de puces / sockets, le nombre de cœurs par puce, le nombre d'opérations en virgule flottante par cycle et la largeur vectorielle de ces opérations . Ensuite, vous multipliez simplement.

Prenez, par exemple, les processeurs Intel Xeon E5-2680 "Sandy Bridge" de Stampede où je travaille. Les spécifications sont les suivantes:

  • 2,7 GHz
  • 2 puces / nœud, 8 cœurs / puce
  • 2 instructions vectorielles / cycle
  • Instructions AVX de 256 bits de large (4 opérandes double précision simultanés)

La multiplication de ces données donne 345,6 GF / nœud ou 2,2 PF pour la partie non accélérée du système.

Nous pensons généralement en termes d'opérations en double précision (64 bits), car c'est la précision requise pour la grande majorité de nos utilisateurs, mais vous pouvez refaire le calcul en termes de simple précision si vous le souhaitez. Cela ne change généralement que le dernier facteur, disons 8 SP Flops / instruction au lieu de 4 DP Flops / inst, mais cela peut être très différent de cela. Les GPU plus anciens, par exemple, ne faisaient que le DP à environ 1/8 du taux de SP. Si jamais vous citez un nombre pour votre système, vous devez être explicite sur ce que vous avez utilisé si ce n'est pas en double précision car les gens penseront que c'est le cas, sinon.

De plus, si votre puce prend en charge les instructions FMA (Multiply-Add) fusionnées, et qu'elle peut les faire à plein débit, la plupart des gens comptent cela comme 2 opérations à virgule flottante, bien qu'un compteur de performances matérielles puisse le compter comme une seule instruction.

Enfin, vous pouvez également le faire pour tous les accélérateurs qui pourraient exister dans votre système (comme un GPU ou Xeon Phi) et ajouter ces performances aux performances du processeur pour obtenir un total théorique.

Bill Barth
la source
Il ne suffit pas de connaître le modèle du processeur, il faut connaître les fréquences de fonctionnement réelles
Aksakal
@Aksakal, pour une analyse théorique, il est probablement OK de choisir la fréquence nominale. Il est difficile de savoir à quelle fréquence vos puces fonctionneront, car cela peut dépendre de la charge de travail et de la qualité de votre climatisation.
Bill Barth
2

Je comprends que vous avez demandé la valeur théorique, mais comme cela est presque toujours inaccessible par tout code réel, même LINPACK, vous voudrez peut-être simplement exécuter (optimisé) DGEMM pour les très grandes matrices. La raison pour laquelle je préfère cette méthode est qu'elle expose certains des défauts de certains processeurs qui les empêchent d'atteindre leur valeur de flop de crête théorique.

Par exemple, les GPU NVIDIA effectuent actuellement des opérations entières et à virgule flottante sur le même pipeline. Cela signifie que vous ne pouvez atteindre le ou les flops de crête théoriques que si vous ne faites aucun calcul entier . Comme l'indexation de tableaux et toute autre forme d'accès aux données nécessitent une arithmétique entière quelque part, aucun code ne peut atteindre le ou les flops de crête théoriques sur un GPU NVIDIA. Dans la plupart des cas, on voit ~ 80% comme la limite supérieure. Pour les processeurs qui émettent simultanément des opérations en nombre entier et en virgule flottante, ce n'est pas un problème.

Sur certains processeurs multicœurs de type GPU comme Intel Knights Corner et Blue Gene / Q, il est plus difficile d'atteindre le pic / flop que sur les processeurs traditionnels pour des problèmes de pipeline similaires (bien que les deux puissent atteindre ~ 90% du pic dans les grands DGEMM au moins ).

Jeff
la source
Pourquoi aucun code ne peut atteindre le ou les flops de crête théoriques sur un GPU NVIDIA?
skytree
Voir le paragraphe 2. Cependant, tout cela était pertinent pour les anciennes architectures. Les architectures NVIDIA plus récentes peuvent exécuter simultanément des nombres entiers et à virgule flottante et atteindre> 90% du pic dans les grands DGEMM.
Jeff