[問題] openmp語法的問題

看板C_and_CPP作者 (尼可拉斯)時間15年前 (2009/03/10 22:38), 編輯推噓1(104)
留言5則, 4人參與, 最新討論串1/2 (看更多)
想問一個很簡單的openmp的語法問題 目的:想利用多核心平行處理的優勢 縮短產生亂數矩陣的時間 下列是小範例 10*10 二維矩陣 ---------------------------------------------------------------- #include <omp.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]) { #pragma omp parallel for for( i = 0; i <= 10; i++ ) { for( j = 0; j <= 10; j++) { a[i][j] = RAND(); } } system( "pause" ); return 0; } ------------------------------------------------------------------ 問題出在這個寫法 會造成 假設CPU1 與 CPU2 同時以i=1 與 i=6 進入迴圈 CPU1 i=1 j=1 那麼CPU2 i=6 j=2 所以 我就無法產生a[1][2]的亂數了 簡單來說 這個語法會造成無法所有的組合都能產生亂數 我想要的是 CPU1 i=1 進入迴圈 能夠單獨跑j迴圈(且依序) CPU2 i=6 進入迴圈 也能單獨跑j迴圈(且依序) 不知道有哪些高手有這方面的經驗 可以指導一下 感激不盡 --  走了啦!難道你不想要把到正妹嗎?                \    放開我!再讓我打一場三國就好了!       ○︿_      - ┌╮       /卡 ○/     /└┘ 再一場就好!拜託,啊啊啊!       √\〈甯_ ├┐ | ̄|  -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.101.120 ※ 編輯: nicholas1119 來自: 140.118.101.120 (03/10 22:40)

03/10 23:08, , 1F
j要設成private吧... 某部分變數不應該共用
03/10 23:08, 1F

03/10 23:49, , 2F
雖然沒寫過但為什麼不使用在裡面那個for?效果不同?
03/10 23:49, 2F

03/11 00:07, , 3F
一樓謝謝了 二樓也謝謝 你想法很好 不過我裡面想要依
03/11 00:07, 3F

03/11 00:08, , 4F
序的
03/11 00:08, 4F

03/11 01:27, , 5F
i,j都設成private即可 另外 RAND不支援multi-thread
03/11 01:27, 5F
文章代碼(AID): #19jdjPwp (C_and_CPP)
文章代碼(AID): #19jdjPwp (C_and_CPP)