英特尔堆数组的gfortran标志[大小] [英] gfortran flag for intel's -heap-arrays [size]
本文介绍了英特尔堆数组的gfortran标志[大小]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
-heap-arrays [size]
推荐答案
这是一个旧问题,但接受的答案并不完全正确,我希望为像我这样遇到帖子寻找答案的未来用户添加上下文。
我相信英特尔的ifort
和GCC的gfortran
都有一定的字节限制,超过该限制的数组不会分配到堆栈上,而是在静态内存中。
Intel:-heap-arrays [size]
将根据大小将大于[size]
千字节的任何数组放在堆上,而不是放在静态内存或堆栈上。
-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屋!
查看全文