作者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