4
我知道我可以通过使用如何全局设置默认子句为none?
#pragma omp parallel default none
但是,有没有一种方法来设置这个全局告诉OpenMP的不并行区域内共享默认的变量?看起来好像全局默认是所有没有声明为private的东西都是共享的,并且至少在我的应用程序中,还有更多的东西应该是私有的而不应该被共享。
我知道我可以通过使用如何全局设置默认子句为none?
#pragma omp parallel default none
但是,有没有一种方法来设置这个全局告诉OpenMP的不并行区域内共享默认的变量?看起来好像全局默认是所有没有声明为private的东西都是共享的,并且至少在我的应用程序中,还有更多的东西应该是私有的而不应该被共享。
OpenMP中的所有变量默认共享。如果你想要一组私有变量,你将需要在一个私有子句中的并行编译指示中指定这些变量。如果您使用
#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
这不回答原来的问题,即使OP接受了它。 – nbro 2018-01-17 20:18:20