Fortran Coder

查看: 6318|回复: 2
打印 上一主题 下一主题

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

[复制链接]

13

帖子

4

主题

0

精华

入门

F 币
92 元
贡献
55 点
跳转到指定楼层
楼主
发表于 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

感谢!

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

13

帖子

4

主题

0

精华

入门

F 币
92 元
贡献
55 点
沙发
 楼主| 发表于 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 (202.77 KB, 下载次数: 210)

微信图片_20210816102429.png

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
板凳
发表于 2021-8-16 18:45:58 | 只看该作者
百度一下 ulimit -s
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-25 21:30

Powered by Tencent X3.4

© 2013-2024 Tencent

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