joezhr 发表于 2021-8-14 14:39:57

Linux下ifort编译程序时如何扩大栈空间

本帖最后由 joezhr 于 2021-8-14 14:51 编辑

各位前辈好,执行编译好的程序时出现了数组越界,尝试了在编译命令后加-mcmodel=large,但是并没有作用。
想请问Linux下的ifort是否有类似于以下的g++的扩大栈空间的方法?
g++ a.cpp -o a.exe -Wl,--stack=268435456
感谢!

joezhr 发表于 2021-8-14 15:58:42

本帖最后由 joezhr 于 2021-8-16 15:02 编辑

已解决,方法是在编译时加入选项-heap-arrays从而将存在栈的临时数组改存到堆当中。{:3_62:}
但是又出现另一个问题,就是在编译时加入动态链接库后(如下例)
ifort -qopenmp -mkl -o maindynamiclibrary1.so dynamiclibrary2.socode1.f90 code2.f90 code3.f90 -heap-arrays

计算大网格的案例时又出现了forrtl: severe (174): SIGSEGV, segmentationi fault occured的报错,请问各位前辈如何在引入动态链接库的同时使用堆空间呢?

问题已解决,在编译程序之前先将Linux系统的内存大小、数据段长度和堆栈大小用ulimit命令设为无限制即可。

li913 发表于 2021-8-16 18:45:58

百度一下 ulimit -s
页: [1]
查看完整版本: Linux下ifort编译程序时如何扩大栈空间