我在使用ifort
、intel mpi
编写并行程序运行时遇到了APPLICATION TERMINATED WITH THE EXIT STRING: Segmentation fault (signal 11)
。
首先我们看到Segmentation fault,是段错误,一般来说错误原因都在于数组越界。经我对程序的仔细检查,发现可能是栈空间不够用了,溢出了。
使用ulimit -s
可以查看系统栈空间的限制大小是多少。调成unlimited
就可以解决了。
如果你没有管理员权限,对于intel编译器来说,可以在编译选项里加上-heap-arrays 64,表示所有超过64KB的变量都将被自动分配在堆空间里,这样就不会产生栈溢出了。
Comments
注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。