回 帖 发 新 帖 刷新版面

主题:经典错误解决不了:openmp中segmentation fault

程序串行时没有错误,一加上openmp并行后就运行不了,报错是
/var/spool/torque/mom_priv/jobs/6127.node1.SC: line 11:   629 Segmentation fault
上网查了一下这个错误的原因,然后做了以下这些

1.在工作目录下找到.bashrc文件,加入语句export STACKSIZE=500M
2.在提交任务的脚本中加入语句 export STACSIZE=500M
3.在SSH页面上运行ulimit -s 500000
4.在openmp并行区,把比较大的数组都改成了动态数组

不过都没用,还是同样的错误,不知道该怎么办了,上来请教高手们
谢谢!!!

(用的是gfortran编译器,曙光集群)



回复列表 (共23个回复)

沙发

编译选项是啥?如果有-march=XXX,那就试试改成-march=i686

板凳

编译选项是 -O3,-ftree-vectorize -fopenmp,你说的改的-march=XXX是什么意思呢,看了你们以前的帖子知道是线程堆栈的问题,可是怎么解决呢?
谢谢哈

3 楼

1. 确定不是代码问题?
2. 集群上怎么用omp?(我对曙光集群不了解)

4 楼

代码肯定没问题,在个人机的window下运行8个线程一点问题都没有,在曙光上运行是用它的一个节点,就相当于是一台电脑。

5 楼

在一个节点上确实是相当于一个电脑.
我遇到过一种情况, 就是某个节点的内存被其他人使用得差不多没有的时候, omp也是提示出错. 不知道曙光可不可以查看该程序当前所在节点的资源情况?

6 楼

gcc是啥版本捏?用董兄编译的版本试试看看行不行?

7 楼

[quote]gcc是啥版本捏?用董兄编译的版本试试看看行不行?[/quote]
我没出Linux版

8 楼

另外,环境变量名字对么
记得名字是OMP_STACKSIZE和GOMP_STACKSIZE

9 楼

另外Segmentation fault也有可能是其他错误
需要gdb自己调试

10 楼

这个节点是我独享的,应该不会出现这种情况

我来回复

您尚未登录,请登录后再回复。点此登录或注册