2012-03-17 53 views
4

我知道我可以通过使用如何全局设置默认子句为none?

#pragma omp parallel default none 

但是,有没有一种方法来设置这个全局告诉OpenMP的不并行区域内共享默认的变量?看起来好像全局默认是所有没有声明为private的东西都是共享的,并且至少在我的应用程序中,还有更多的东西应该是私有的而不应该被共享。

回答

7

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

+0

这不回答原来的问题,即使OP接受了它。 – nbro 2018-01-17 20:18:20