Comment mesurer les FLOPS
Comment puis-je mesurer le FLOPS ou IOPS? Si je ne mesure du temps ordinaire virgule flottante addition /multiplication , est-il équivalent à FLOPS?
Voulez-vous dire "IPS"? ESPS est quelque chose de tout à fait différent.
OriginalL'auteur Madhumitha B | 2012-02-18
Vous devez vous connecter pour publier un commentaire.
FLOPS est d'opérations en virgule flottante par seconde. Pour mesurer les FLOPS vous devez d'abord le code qui effectue ces opérations. Si vous avez ce code, que vous pouvez mesurer est son temps d'exécution. Vous avez également besoin de résumer ou de devis (pas de mesure!) toutes les opérations en virgule flottante et la diviser sur la valeur mesurée de la paroi du temps. Vous devez compter toutes les opérations ordinaires comme des additions,des soustractions,des multiplications,des divisions (oui, même s'ils sont plus lents et mieux éviter, ils sont encore FLOPs..). Attention, la façon dont vous comptez! Ce que vous voyez dans votre code source est probablement pas ce que le compilateur produit après que toutes les optimisations. Pour être sûr que vous aurez probablement à l'assemblée..
FLOPS n'est pas la même que d'Opérations par seconde. Ainsi, même si certaines architectures ont un seul MAD (multipliez-et-ajouter) l'enseignement, ceux qui comptent comme deux FLOPs. De même, le jeu d'instructions SSE. Vous les considérez comme une instruction, mais ils effectuent plus d'un FLOP.
FLOPS ne sont pas entièrement dénués de sens, mais vous devez être prudent lors de la comparaison de vos FLOPS de sb. elses FLOPS, en particulier les fournisseurs de matériel. E. g. NVIDIA donne le pic FLOPS de la performance de leurs cartes en supposant que MAD opérations. Donc, à moins que votre code a ceux-ci, vous n'aurez plus jamais obtenir cette performance. Soit repenser l'algorithme, ou de modifier le pic de matériel FLOPS par un bon facteur, qui vous avez besoin pour comprendre votre propre algorithme de! E. g., si votre code n'effectue de multiplication, vous le divisez par 2. Comptage de droit pourrait obtenir votre code de sous-optimale, et de manière très efficace sans modifier une seule ligne de code..
OriginalL'auteur angainor
Vous pouvez utiliser le CPU compteurs de performances pour obtenir le CPU lui-même de compter le nombre d'opérations en virgule flottante qu'il utilise pour votre programme en particulier. Puis c'est la simple question de l'divisant ce chiffre par le moment de l'exécution. Sur Linux, la perf outils permettent de le faire très facilement, j'ai un writeup sur les détails de ce sur mon blog ici:
http://www.bnikolic.co.uk/blog/hpc-howto-measure-flops.html
OriginalL'auteur Bojan Nikolic
Généralement, vous utilisez une référence connue. Des choses comme MIPS et megaFLOPS ne pas dire grand-chose pour commencer, et si vous n'avez pas les limiter à des critères spécifiques, de même que peu de sens est perdu.
Généralement, par exemple, integer vitesse sera cité dans les "murs de pierres sèches MIPS" et à virgule flottante dans "Linpack megaFLOPS". Dans ces, "pierres sèches" et "Linpack" sont les noms des points de référence utilisés pour faire les mesures.
IOPS sont des opérations d'e/S. Ils sont bien les mêmes, mais dans ce cas, il n'y a pas autant d'entente au sujet de la norme(s) à utiliser (bien que le SPC-1 semble assez populaire).
OriginalL'auteur Jerry Coffin
Du FLOP sont pas bien définis. mul FLOPS sont différentes que d'ajouter des FLOPS. Vous devez venir avec votre propre définition ou de prendre de la définition à partir d'une référence connue.
OriginalL'auteur usr
C'est une architecture très spécifique de la question, pour un naïf/base/start je vous recommande de trouver combien d'Opérations 1 multiplication de prendre, sur votre matériel, puis faire une grande multiplication de matrice , et de voir combien de temps cela prend. Ensuite, vous pouvez eaisly estimer le FLOP de votre matériel
la norme de l'industrie de la mesure de flops est bien connu Linpack ou HPL haute performance linpack, essayez de regarder à la source ou de l'exécution de celles de votre auto
Je voudrais également vous reporter à cette réponse comme un excellent référence
OriginalL'auteur pyCthon