d'opérations en virgule flottante par cycle - intel
J'ai été à la recherche depuis un certain temps et ne semble pas à trouver un officiel/concluante figure en indiquant le numéro de simple précision d'opérations en virgule flottante/cycle d'horloge d'un processeur Intel Xeon quadcore pouvez compléter. J'ai un processeur Intel Xeon quadcore E5530 CPU.
Je suis l'espoir de l'utiliser pour calculer le montant maximum théorique FLOP/s mon CPU peut atteindre.
MAX FLOPS = (# Nombre de cœurs) * (Fréquence d'Horloge (cycles/sec) ) * (# FLOPS /cycle)
Rien de me pointer dans la bonne direction serait utile. J'ai trouvé cette
FLOPS par cycle pour sandy-bridge et haswell SSE2/AVX/AVX2
Intel Core 2 et Nehalem:
4 DP FLOPs/cycle 2-grande SSE2 plus de + 2 à l'échelle SSE2 multiplication
8 PS FLOPs/cycle: 4 à l'échelle de l'ESS plus + 4 à l'échelle de l'ESS multiplication
Mais je ne suis pas sûr de l'endroit où ces chiffres ont été trouvés. Sont-ils en supposant un fused multiply ajouter (FMAD) opération?
EDIT: à l'Aide de ce, DP-je calculer la bonne DP arithmétique débit cité par Intel comme 38.4 GFLOP/s (cité ici). Pour les SP, je reçois le double, de 76,8 GFLOP/s. Je suis sûr que 4 DP FLOP/cycle et 8 PS FLOP/cycle est correct, je veux juste la confirmation de la façon dont ils ont obtenu les FLOPs/la valeur sur le cycle de 4 et 8.
Vous ne pouvez probablement pas trouver un numéro officiel car il n'existe pas - c'est très dépendante sur le mélange des instructions que vous avez, et les dépendances entre eux. Le maximum théorique peut être calculée, mais il y a très peu utile dans le monde réel des programmes (autres que le synthétique de repères) qui aurait exactement la bonne combinaison d'instructions dans le bon ordre pour obtenir le maximum...
Et si vous êtes curieux de voir comment obtenir le maximum sur le FLOP/s, prendre regardez: stackoverflow.com/questions/8389648/... Que l'on est pour la double précision, mais il peut être facilement modifié pour tellement simple précision.
Dans la pratique, on souhaite souvent de chargement/stockage de données ainsi que faire un calcul. Ainsi, alors que les valeurs théoriques de pointe FLOPS sont bon à savoir il n'est pas très utile si les données ne peuvent pas être lus dans assez rapide pour atteindre cet. Plus utile métrique donne aussi le nombre de virgule flottante de chargement/magasins qui peuvent être obtenus en tant que tout. E. g un SB de base peut charger 4 doubles par cycle d'horloge, et faire 8 double de l'exploitation (4 multiplications et 4 additions) par cycle d'horloge. L'obtention de ce est plus difficile que de simplement faire le calcul.
OriginalL'auteur user3495341 | 2014-04-21
Vous devez vous connecter pour publier un commentaire.
Nehalem est capable d'exécuter 4 DP ou 8 PS FLOP/cycle. Ceci est accompli à l'aide de l'ESS, qui fonctionne sur des paniers de valeurs à virgule flottante, 2/s'inscrire en DP et 4/s'inscrire dans la SP. Pour atteindre 4 DP FLOP/cycle ou 8 PS FLOP/cycle du cœur est d'exécuter 2 ESS instructions par cycle. Ceci est accompli par l'exécution d'un MULDP et un ADDDP (ou un MULSP et un ADDSP) par cycle. La raison pour cela est possible parce que Nehalem a des unités séparées pour l'ESS de se multiplier et de l'ESS ajouter, et ces unités sont en pipeline, de sorte que le
throughput
est l'un de multiplier et de un ajouter par cycle. Multiplie sont dans le multiplicateur de pipeline pour les 4 cycles de SP et 5 cycles en DP. Ajoute sont dans le pipeline pour les 3 cycles indépendants de la SP/DP. Le nombre de cycles dans le pipeline est connu comme lelatency
. Pour calculer le pic FLOP/cycle tout ce que vous devez savoir, c'est le débit. Donc, avec un débit de 1 ESS, vecteur d'instructions/cycle pour le multiplicateur et l'additionneur (2 unités d'exécution), vous avez 2 x 2 = 4 FLOP/cycle DP et 2 x 4 = 8 FLOP/cycle dans SP. Effectivement maintenir ce débit de pointe vous devez tenir compte de la latence (si vous avez au moins autant d'opérations indépendantes dans le pipeline de la profondeur du pipeline) et vous devez tenir compte être en mesure de nourrir les données assez rapidement. Nehalem a un contrôleur de mémoire intégré, capable de très haute bande passante de la mémoire qui peut atteindre si les données prefetcher correctement prévoit le modèle d'accès aux données (séquentielle de chargement de la mémoire est une simple motif qu'elle puisse anticiper). Généralement il n'y a pas assez de bande passante de la mémoire de maintenir l'alimentation de tous les cœurs avec des données à pic FLOP/cycle, de sorte que certains de la quantité de réutilisation des données de la mémoire cache est nécessaire pour soutenir la crête FLOP/cycle.De détails sur l'endroit où vous pouvez trouver de l'information sur le nombre d'indépendants, des unités d'exécution et leur débit et une latence dans les cycles suivants.
Voir page 105 8.9 unités d'Exécution de ce document
http://www.agner.org/optimize/microarchitecture.pdf
Il est dit que pour Nehalem
Afin d'obtenir 8 PS FLOP/cycle vous avez besoin de 4 SP AJOUTER/cycle et 4 SP MUL/cycle. L'additionneur et le multiplicateur sont sur des unités séparées, et l'envoi de séparer les ports, chacun peut exécuter sur 4 SP paniers opérandes simultanément à l'aide de l'ESS emballé (vecteur) instructions (4x32bit = 128bits). Les deux ont un débit de 1 de fonctionnement par cycle d'horloge. Afin d'obtenir ce débit, vous devez tenir compte de la latence... combien de cycles après l'instruction des questions avant de vous pouvez utiliser le résultat.. si vous avez d'émettre plusieurs instructions pour couvrir le temps de latence. Le coefficient multiplicateur unique de la précision a un temps de latence de 4 et de l'additionneur de 3.
Vous pouvez trouver ces même débit et la latence des numéros pour Nehalem dans le Intel guide d'Optimisation de la, tableau C-15a
http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html
OriginalL'auteur amdn