我相信我遇到了使用OpenMP的虛假共享。有什麼方法可以識別並修復它嗎?OpenMP虛假共享
我的代碼是:https://github.com/wchan/libNN/blob/master/ResilientBackpropagation.hpp線36
使用4芯CPU相比單線程1芯版本中額外的性能僅產生10%。當使用NUMA 32物理(64虛擬)CPU系統時,CPU利用率停留在1.5核心左右,我認爲這是虛假共享的直接症狀,無法擴展。
我也試着用英特爾VTune分析器來運行它,它說大部分時間都花在了「f()」和「+ =」函數上。我相信這是合理的,並不能真正解釋爲什麼我得到如此糟糕的縮放......
任何想法和建議?
謝謝。
虛假分享不會減少您的CPU利用率。它只會導致大量的緩存未命中。 – Mysticial 2012-01-27 00:52:34
@Mystical - 我的理解是,如果調度程序調度擁有該頁面的處理器上的所有線程以避免過度遷移它,則可能是在NUMA上。 – Flexo 2012-01-27 18:54:37
@awoodland這當然是一種可能 - 儘管將所有事物都記憶在一起的另一個後果。 (因爲你在我的聯合國中遺漏了第二個'我',所以我沒有得到你的支持。) – Mysticial 2012-01-27 20:59:08