首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pragma omp快捷方式(C)

pragma omp快捷方式(C)
EN

Stack Overflow用户
提问于 2016-09-29 19:22:44
回答 1查看 107关注 0票数 1

我有一些全局变量,需要在程序的并行化部分中使用。所以我写了这个:

代码语言:javascript
运行
复制
#define N 2000
int x[N], matrix[N][N]

int main(int argc, char **argv)   
...
#pragma omp parallel
{
  #pragma omp privatethread(x,matrix)
  #pragma omp for
  for(int k=0; k<100;++k)
    /*some function to modify values of x and matrix differently 
     from run to run*/
  ...
}
...

使用#的部件是否相当于:

代码语言:javascript
运行
复制
...
#pragma omp privatethread(x,matrix) parallel for
...

声明#务实omp并行,然后声明#务实omp私有线程与首先声明#语用omp私有线程,然后声明#语用omp并行用于之间有什么区别吗?我一定要在私密部分之后放个{?

代码语言:javascript
运行
复制
#pragma omp privatethread(x,matrix)
{ //<-- here
#pragma omp for

最后,这是在c中使用大型向量的好方法,还是在我的语用omp中使用malloc并删除私有线程部分更好?(请告诉我,如果我在一个新的帖子中问这个结尾的问题更好)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-24 18:53:15

1.下面的代码给出了一个错误。即使你移除了。

代码语言:javascript
运行
复制
...
#pragma omp privatethread(x,matrix) parallel for
...

声明必须遵循以下语法

代码语言:javascript
运行
复制
#pragma omp threadprivate (list)

2.两者之间没有差别,

代码语言:javascript
运行
复制
#pragma omp parallel
{
   #pragma omp privatethread(list)
   //CODE
}

代码语言:javascript
运行
复制
#pragma omp privatethread(list) 
#pragma omp parallel
{
  //CODE
} 

如您所见,您不必在#杂注omp私有线程 .This语句之后放置{方括号,它只会使全局作用域变量局部性和持久化到线程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39778396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档