08月11, 2017

编写并行程序时遇到的段错误

我在使用ifortintel mpi编写并行程序运行时遇到了APPLICATION TERMINATED WITH THE EXIT STRING: Segmentation fault (signal 11)

首先我们看到Segmentation fault,是段错误,一般来说错误原因都在于数组越界。经我对程序的仔细检查,发现可能是栈空间不够用了,溢出了。

使用ulimit -s可以查看系统栈空间的限制大小是多少。调成unlimited就可以解决了。

如果你没有管理员权限,对于intel编译器来说,可以在编译选项里加上-heap-arrays 64,表示所有超过64KB的变量都将被自动分配在堆空间里,这样就不会产生栈溢出了。

本文链接:https://debug.fanzheng.org/post/segment-fault-while-writing-a-parallel-program.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。