在openmp并行区域中处理大型私有数组的最佳方法

时间:2015-08-20 07:26:48

标签: arrays fortran openmp

我正在使用OpenMP和Fortran。

在OpenMP并行区域内private在堆栈上分配变量。我有一些1000x1000阵列的变量,这导致一些问题。我可以绕过它,但我似乎必须做ulimit -s unlimited以及设置OMP_STACKSIZE环境变量。这对我来说没问题,但对于我的代码的其他用户来说并不是很好。

目前,我已经采用过时的方式传递数组:

integer, intent(in) :: N
real(c_double) :: private_var(N,N)

!$omp parallel do default(shared) private(private_var)
...

是否有更好的方法来声明这些数组,以避免用户必须在其计算机上手动设置堆栈大小?我不想在循环中分配,但也许我可以先打开并行区域,让每个worker分配自己的私有工作数组,有do循环吗?

0 个答案:

没有答案