Fortran Coder

查看: 277|回复: 2

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

[复制链接]

9

帖子

3

主题

0

精华

入门

F 币
61 元
贡献
38 点
发表于 2021-8-14 14:39:57 | 显示全部楼层 |阅读模式
本帖最后由 joezhr 于 2021-8-14 14:51 编辑

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

感谢!

回复

使用道具 举报

9

帖子

3

主题

0

精华

入门

F 币
61 元
贡献
38 点
 楼主| 发表于 2021-8-14 15:58:42 | 显示全部楼层
本帖最后由 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

626

帖子

1

主题

0

精华

大宗师

F 币
3117 元
贡献
1951 点
发表于 2021-8-16 18:45:58 | 显示全部楼层
百度一下 ulimit -s
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2021-9-24 07:35

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表