Re: C++ OpenMP 多CPU同時處理可能的問題

看板Programming作者 (dryman)時間15年前 (2010/05/19 22:57), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串4/7 (看更多)
: 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

05/20 05:50, , 1F
怎麼覺得還是會打架@@
05/20 05:50, 1F

05/20 07:32, , 2F
啊啊,打架應該是靠array[i]而不是i
05/20 07:32, 2F

05/20 07:32, , 3F
我腦袋有洞...
05/20 07:32, 3F

05/20 08:23, , 4F
我就在搞不懂明明算的是 array[i] 的值
05/20 08:23, 4F

05/20 08:24, , 5F
怎麼你的回文都以為是算 i ....
05/20 08:24, 5F

05/20 10:07, , 6F
真的超蠢的 orz||||
05/20 10:07, 6F
文章代碼(AID): #1By_nSo6 (Programming)
文章代碼(AID): #1By_nSo6 (Programming)