作者dryman (dryman)
看板Programming
標題Re: C++ OpenMP 多CPU同時處理可能的問題
時間Wed May 19 22:57:30 2010
: int array[3G];
: int counters[64M];
: for( int i = 0; i < 3G; i++) {
: counter[array[i] % 64M] ++;
: }
開始擔心會不會是我問題沒看清楚
我這樣解讀你看是不是合乎你運算式的意思
counter[array[i] % 64M] ++;
所以counter中的i可以表示成 x + n*64M, 0 <= x < 64M x,n 為正整數(包括零)
然後會被 mod 掉只剩下 x
因為每個 x 都不相同
不同n但同個x時,有同時計算的可能性
所以
for( int i=0; i < (3G/64M); i++){
OpenMP for (int j = 0; j< 64M; j++){
counter[ array[j+i*64M] % 64M] ++;
}
}
這樣不知道是不是合乎你的需求?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.96.207
→ mantour:怎麼覺得還是會打架@@140.112.213.158 05/20 05:50
→ dryman:啊啊,打架應該是靠array[i]而不是i 114.42.96.207 05/20 07:32
→ dryman:我腦袋有洞... 114.42.96.207 05/20 07:32
推 LPH66:我就在搞不懂明明算的是 array[i] 的值 140.112.250.80 05/20 08:23
→ LPH66:怎麼你的回文都以為是算 i .... 140.112.250.80 05/20 08:24
→ dryman:真的超蠢的 orz|||| 114.42.96.207 05/20 10:07