Fortran Coder

标题: Linux下ifort编译程序时如何扩大栈空间 [打印本页]

作者: joezhr    时间: 2021-8-14 14:39
标题: Linux下ifort编译程序时如何扩大栈空间
本帖最后由 joezhr 于 2021-8-14 14:51 编辑

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

感谢!


作者: joezhr    时间: 2021-8-14 15:58
本帖最后由 joezhr 于 2021-8-16 15:02 编辑

已解决,方法是在编译时加入选项-heap-arrays从而将存在栈的临时数组改存到堆当中。
但是又出现另一个问题,就是在编译时加入动态链接库后(如下例)
[Fortran] 纯文本查看 复制代码
ifort -qopenmp -mkl -o main  dynamiclibrary1.so dynamiclibrary2.so  code1.f90 code2.f90 code3.f90 -heap-arrays


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

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

微信图片_20210816102429.png (202.77 KB, 下载次数: 186)

微信图片_20210816102429.png

作者: li913    时间: 2021-8-16 18:45
百度一下 ulimit -s




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2