加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Fortran中数组太大,可引发各种报错

(2012-02-28 19:33:59)
标签:

fortran

数组

大数组

杂谈

分类: 技术
Fortran程序的编程过程中要注意一些奇怪的问题,如有的时候定义的数组太大就可能引发
编译器的报错。例如又一次定义了一个数组为real::8400x5400x168, 结果引发编译器报错:

/tmp/ifortVYE5Pu.o: In function `MAIN__':
FSMap.f90:(.text+0x7f): relocation truncated to fit: R_X86_64_PC32 against `var$1385.0.4'
FSMap.f90:(.text+0x89): relocation truncated to fit: R_X86_64_PC32 against `var$1383.0.4'
FSMap.f90:(.text+0xca): relocation truncated to fit: R_X86_64_PC32 against `var$1383.0.4'
FSMap.f90:(.text+0xd2): relocation truncated to fit: R_X86_64_PC32 against `var$1383.0.4'

这个报错简直让人不止所云。后来各种调试,发现如果定义的时候赋初值,编译器会报一个人类能看懂的错误:
FSMap.f90(9): error #5524: Variable RAINALL is larger than 2147483647 bytes and cannot be initialized

原来数组定义的太大了,编译器不干了。 那么怎么办呢,这时候有两个办法,要么将这个数组拆分一下,实在
不能拆分,那么就定义为 allocatable的,然后在运行过程中 allocate。 不过最终还是建议不要直接定义太大
的数组了。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有