Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 如何将Fortran模块中的所有全局变量设置为OpenMP专用?_Multithreading_Fortran_Openmp_Default_Private - Fatal编程技术网

Multithreading 如何将Fortran模块中的所有全局变量设置为OpenMP专用?

Multithreading 如何将Fortran模块中的所有全局变量设置为OpenMP专用?,multithreading,fortran,openmp,default,private,Multithreading,Fortran,Openmp,Default,Private,我想知道如何在Fortran模块中设置全局变量,我在omp parallel部分中调用了该模块。我知道THREADPRIVATE可以将变量列表设置为private,但我有太多全局变量要设置。有没有办法将全局变量的默认值更改为private 就我所知,没有这样的办法。使用threadprivate并列出所需的所有变量。如果你有太多的全局变量,把它们去掉。它们不是良好代码设计的标志。听起来像是一个糟糕的设计,是一种让自己进入调试时代的简单方法。首先重构代码,然后将其并行化可能更容易。谢谢您的回复。我

我想知道如何在Fortran模块中设置全局变量,我在
omp parallel
部分中调用了该模块。我知道
THREADPRIVATE
可以将变量列表设置为private,但我有太多全局变量要设置。有没有办法将全局变量的默认值更改为private

就我所知,没有这样的办法。使用
threadprivate
并列出所需的所有变量。如果你有太多的全局变量,把它们去掉。它们不是良好代码设计的标志。

听起来像是一个糟糕的设计,是一种让自己进入调试时代的简单方法。首先重构代码,然后将其并行化可能更容易。谢谢您的回复。我在想,如果模块是一个库,我不能改变它,我能做什么。你能做的很少。你应该换个图书馆。或者避免使用该库的全局变量。通过一个简单的测试,似乎Intel Fortran让您在使用该模块的代码中加入
threadprivate
。格弗特兰不允许这样。我不确定哪个是正确的。你认为openMPI适合这种情况吗?openMPI是MPI的一种实现。这与OpenMP完全不同。如果你不知道MPI是什么,那就忘了它吧。