作者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
1F:→ mantour:怎麽觉得还是会打架@@140.112.213.158 05/20 05:50
2F:→ dryman:啊啊,打架应该是靠array[i]而不是i 114.42.96.207 05/20 07:32
3F:→ dryman:我脑袋有洞... 114.42.96.207 05/20 07:32
4F:推 LPH66:我就在搞不懂明明算的是 array[i] 的值 140.112.250.80 05/20 08:23
5F:→ LPH66:怎麽你的回文都以为是算 i .... 140.112.250.80 05/20 08:24
6F:→ dryman:真的超蠢的 orz|||| 114.42.96.207 05/20 10:07