如何将default子句全局设置为none?

时间:2012-03-17 19:57:05

标签: c++ openmp shared-memory

我知道我可以通过使用

告诉OpenMP默认情况下不要在并行区域内共享变量
#pragma omp parallel default none

但有没有办法在全球范围内设置?似乎全局默认是所有未声明为私有的东西都是共享的,并且至少在我的应用程序中,还有许多应该是私有的而不应该共享的东西。

1 个答案:

答案 0 :(得分:8)

默认情况下,OpenMP中的所有变量都是共享的。如果需要一组私有变量,则需要在private子句中的并行pragma伪指令中指定这些变量。如果你使用

#pragma omp parallel default none

您需要指定私有变量和共享变量。例如:

#pragma omp parallel default(none) private(i,j) shared(a,b) 

参考文献:

[1] http://en.wikipedia.org/wiki/OpenMP#OpenMP_clauses

[2] https://computing.llnl.gov/tutorials/openMP/#ClausesDirectives