簡體   English   中英

如何測量C#應用程序使用的FLOPS?

[英]How do I measure the FLOPS my C# app uses?

Microsoft的《並行編程》白皮書描述了在各種FLOPS閾值下最佳的情況,並且FLOPS速率是何時應使用某種實現的決定點。

如何在應用程序中測量FLOPS?

FLOPS表示每秒進行浮點運算並對其進行測量,就像對執行的浮點運算的數量進行計數並除以執行它們所花費的時間一樣簡單。 測量時間很容易。 對操作進行計算很棘手,通常取決於硬件平台和所使用的編譯器。 通常,簡單的運算(例如加法,減法和乘法)非常快。 除法有點慢。 求平方根甚至更慢。 頻譜中最慢的部分是先驗函數,例如正弦,余弦,求冪和取對數。 這些都將依次擴展並迭代計算,直到實現收斂。 當前大多數CPU支持融合乘法和加法(FMA)操作,即A * B + C在單個周期中執行。

考慮到所有這些,給出絕對FLOPS值非常困難。 如果您的代碼僅執行簡單的操作,那么您將獲得較高的FLOPS計數。 如果它做大量的先驗,那么FLOPS計數將低得多(最多低100倍)。 它還取決於獲取/計算比率,該比率是您訪問主內存的頻率以及編譯器在生成可從延遲隱藏中受益的代碼的能力。

標准的FLOPS基准是LINPACK測試,它可以解決線性方程組的稠密系統。 它僅使用簡單的算術運算(沒有先驗的運算法則),盡管這還不足以說明CPU在執行更復雜的運算時的性能如何,但仍用於將超級計算機排在Top500中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM