我知道我可以通过使用
告诉OpenMP默认情况下不要在并行区域内共享变量#pragma omp parallel default none
但有没有办法在全球范围内设置?似乎全局默认是所有未声明为私有的东西都是共享的,并且至少在我的应用程序中,还有许多应该是私有的而不应该共享的东西。
答案 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