我正在對科學應用進行一些性能測試,並試圖考慮所有可能影響應用程序性能的元素(如緩存大小層次結構CPU速度...緩存行以及以往可能與性能有關)。這個問題出現在我的腦海裏,雖然它可能是愚蠢的,但我想讓它變得很明顯。性能乘以2相同/不相同的矩陣
* 問: *
,如果我不對指正please.cost處理整型和浮點或雙精度數在處理器不同,這是因爲使用CPU浮點單元(以計算浮點值)。現在我想知道在用相同的float或double值填充兩個2d矩陣之間是否存在差異,然後將它們相乘或填充它們的隨機float或double值,然後將它們相乘。劑量編譯器使用緩存矩陣的所有元素具有相同的值?
如果A和B的大小對處理時間(例如乘法)有任何影響或沒有影響,那麼A和B可以是數字中不同大小的數字,如(A.B)的總處理處理浮點值?如果有差異劑量,重要的是要考慮與否? 。 我能夠使用性能計數器庫來測量我的應用程序的性能,但是由於使用過的庫的開銷,您無法確定指令/觸發器變化是針對隨機值還是其他參數,如I/Dcache未命中,緩存大小,問題大小或其他參數。
二手機器英特爾E4500。 編譯器g ++ 4.7。
感謝
我非常懷疑編譯器會緩存這些值。另一方面,一些數學API可能會。處理器甚至可能有(可能很小)的機會。要進行基準測試,請運行足夠多的時間或足夠長的矩陣,以便實際使用至少幾秒鐘,然後在性能檢查之外填充矩陣。 – Dukeling
這就是爲什麼高層優化比低層優化更重要的原因。如果你知道所有的值都是相同的,你可以將問題從O(n^3)減少到O(n^2),而無論處理器有多聰明,它總是O(n^3)如果你執行完整的乘法。 –
你的問題真的很一般。你能更具體地瞭解情況嗎?在這種一般情況下,在整個堆棧中提及所有可能的優化幾乎是不可能的。 –