作者nicholas1119 (尼可拉斯)
看板C_and_CPP
標題[語法] openmp語法的問題
時間Tue Mar 10 22:38:13 2009
想問一個很簡單的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)
1F:→ WPC001:j要設成private吧... 某部分變數不應該共用 03/10 23:08
2F:推 snowlike:雖然沒寫過但為什麼不使用在裡面那個for?效果不同? 03/10 23:49
3F:→ nicholas1119:一樓謝謝了 二樓也謝謝 你想法很好 不過我裡面想要依 03/11 00:07
4F:→ nicholas1119:序的 03/11 00:08
5F:→ latinboy: i,j都設成private即可 另外 RAND不支援multi-thread 03/11 01:27