作者bmw520i (爱微醺的感觉)
看板Fortran
标题[心得] Intel Fortran遇到stack overflow
时间Tue Apr 3 14:29:08 2012
在Intel Fortran下遇到stack overflow的原因应该有好几种,
若是在编译过程无任何错误,且发生在阵列宣告较大时才发生,错误讯息:
severe(170): Program Exception - stack overflow
很可能是需要调整环境某些参数,类似此问题可能过去有人提出怎做,
不过是在Visual Fortran环境下的,最近刚好也遇到,
提供Intel Fortran环境下的更改说明:
到画面功能表列 Project -> Console1 Properties
^^^^^^^^
此处可能因人而异,如Console2、...
左侧 Configuration Properties -> Linker -> System
里面有两项 Stack Reserve Size与Stack Commit Size,预设应看到是0,
变更为 0x400000 即 4M,这样应可解决。
查询一些讨论,似乎是程式bug或撰写方法不佳,不然一般预设stack应是足够,
以自己遇到状况是,在Intel Fortran下有问题需调整,
但在Visual Fortran却正常执行,
其他就有待高手说明、补完或指正,如果说是撰写程式上的瑕疵,不知该如何避免?!
※ 编辑: bmw520i 来自: 140.116.38.161 (04/03 14:42)
1F:→ biggun:我测试过IVF 可以用到10G以上的记忆体 但有几支程式就是会 04/03 15:23
2F:→ biggun:出现上述的情形 我猜可能是程式哪边出了问题导致 04/03 15:24
3F:→ bmw520i:是在stack预设值状态下吗? 04/03 15:35
4F:→ bmw520i:另外程式执行中,工作管理员看到使用记忆体的量是正确吗? 04/03 15:46
5F:→ bmw520i:因为往往由那边去看执行中程式占用的记忆体没想像多 04/03 15:46
6F:→ biggun:我stack没特别去改 应该是default的状态 04/03 17:25
7F:→ biggun:我是用简单的程式去测试 慢慢加大矩阵 在工作管理员可以 04/03 17:26
8F:→ biggun:看到有使用到10G以上 04/03 17:27
9F:推 callmei:我都直接把SYSTEM里的STACK SIZE改成100000000... 04/03 19:06