false-sharing

    0熱度

    1回答

    在下面的代碼中,我已經使用OpenMP的標準parallel for子句進行了並行化。 #pragma omp parallel for private(i, j, k, d_equ) shared(cells, tmp_cells, params) for(i=0; i<some_large_value; i++) { for(j=0; j<some_large_value; j+

    5熱度

    2回答

    任何人都可以在並行程序設計.NET 4.0中與我分享「虛假共享」的知識嗎?如果你可以用一個例子來解釋會很好。提前致謝 。我想要我的代碼的最大性能。

    8熱度

    3回答

    是否有任何工具可以檢測和報告用C或C++編寫的應用程序的False Sharing?

    1熱度

    1回答

    我正在查看OpenMP程序的性能,特別是緩存和內存性能。 我在前面找到了指導方針,而如何使用Vtune來分析性能,並提到哪些計數器需要注意。但是,現在似乎無法找到手冊。 如果你知道我有問題的手冊,或者如果你知道計數器/事件,請讓我知道。此外,如果您有分析多線程內存性能等技術,請分享,如果你能 感謝

    7熱度

    2回答

    我有以下的任務來證明假共享,寫了一個簡單的程序: #include <sys/times.h> #include <time.h> #include <stdio.h> #include <pthread.h> long long int tmsBegin1,tmsEnd1,tmsBegin2,tmsEnd2,tmsBegin3,tmsEnd3; int array[100];

    10熱度

    1回答

    編輯:ST不允許爲新手發佈兩個以上的鏈接。抱歉缺少參考。 我試圖減少C應用程序檢測全局狀態變化的性能相關的鎖定開銷。儘管最近我在這個主題上閱讀了很多內容(例如H. Sutter等等),但我對自己的實施沒有信心。我想使用CAS類似的操作和DCL的組合來檢查全局變量,從而避免虛假共享,以便從多個線程之間共享的數據更新線程本地數據時檢查全局變量的高速緩存行對齊。我的信心不足的主要原因是 我無法解釋在Ty

    1熱度

    2回答

    我相信我遇到了使用OpenMP的虛假共享。有什麼方法可以識別並修復它嗎? 我的代碼是:https://github.com/wchan/libNN/blob/master/ResilientBackpropagation.hpp線36 使用4芯CPU相比單線程1芯版本中額外的性能僅產生10%。當使用NUMA 32物理(64虛擬)CPU系統時,CPU利用率停留在1.5核心左右,我認爲這是虛假共享的直

    3熱度

    1回答

    我有一個程序,其結構如下所示。基本上,我有一個對象的矢量。每個對象都有成員向量,其中一個是包含更多向量的結構向量。通過多線程,對象並行操作,進行涉及訪問和修改成員矢量元素的計算。一個對象一次只能由一個線程處理,並被複制到該線程的堆棧中進行處理。 問題是程序無法擴展到16個內核。我懷疑並建議這個問題可能是虛假共享和/或緩存失效。如果這是真的,似乎原因必須是向量分配內存的距離太近,因爲我的理解是,兩個