英特尔堆数组的gfortran标志[大小] [英] gfortran flag for intel's -heap-arrays [size]

查看:0
本文介绍了英特尔堆数组的gfortran标志[大小]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

intel ifort's

对应的gfortran标志是什么
-heap-arrays [size]

推荐答案

这是一个旧问题,但接受的答案并不完全正确,我希望为像我这样遇到帖子寻找答案的未来用户添加上下文。

我相信英特尔的ifort和GCC的gfortran都有一定的字节限制,超过该限制的数组不会分配到堆栈上,而是在静态内存中。

Intel:-heap-arrays [size]将根据大小将大于[size]千字节的任何数组放在堆上,而不是放在静态内存或堆栈上。

GCC没有这个选项,只有-fmax-stack-var-size=n,其中n个字节以上的任何变量都不会放入堆栈。文档(https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html)是这样写的:

if the size is exceeded static memory is used (except in procedures marked as RECURSIVE).

这里的关键区别在于,不能保证将这些大型变量放在堆上。

因此英特尔和GCC的两个选项并不相同,需要更加小心地确保gfortran中的大数组不会在静态内存中共享。

这篇关于英特尔堆数组的gfortran标志[大小]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆