【发布时间】:2013-12-13 22:11:15
【问题描述】:
谁能告诉我如何将 OpenMP 堆栈大小设置为无限制?
喜欢这个链接:Why Segmentation fault is happening in this openmp code?
我也有一个Fortran写的项目(客户的复杂代码),如果我设置OMP_STACKSIZE,项目运行正常。如果我取消设置,项目将失败。
但是,不同的输入数据有不同的OMP_STACKSIZE,所以我必须为每个输入数据尝试一下,(因为我必须节省内存)。
我可以像 pthread (ulimit -s unlimited) 一样设置 OpenMP 堆栈吗?或者有一些方法可以动态设置 omp 堆栈大小?
我使用的是 RHEL 6.1 和英特尔编译器。
非常感谢!
【问题讨论】:
-
我记得之前在 intel fortran 文档或常见问题解答中的某处看到了 ulimit -s 技巧(我再也找不到了),所以我相信这对你有用。我很确定这是一个操作系统限制,所以无论你的编译器是什么,无论你有 OpenMP 还是 pthreads,或者任何其他类似的细节,它都是一样的。
-
您不能拥有无限的堆栈大小,因为您没有无限的内存。操作系统必须把你的线程堆栈放在某个地方。
ulimit -s unlimited只是意味着操作系统将允许您使用您希望使用的任何堆栈大小。
标签: fortran openmp intel-fortran stack-size