Fortran Coder

查看: 22471|回复: 7

[数值问题] forrtl:severe(179):cannot allocate array - overflow on array size calculation

[复制链接]

35

帖子

11

主题

0

精华

熟手

F 币
129 元
贡献
118 点
发表于 2017-2-27 16:58:15 | 显示全部楼层 |阅读模式
请问一下,这是个什么错误?:forrtl:severe(179):cannot allocate array - overflow on array size calculation.

这是断点的提示内容,下图是断点出现的位置。是不是我的数组太大了,ZKMfai是的jdz=90000,所以计算内存太大?我计算机还行的,90000*90000数组算很大了吗?我对这没概念,望指出,多谢!

断点位置

断点位置

计算机配置

计算机配置

63

帖子

9

主题

0

精华

专家

超凡脱俗

F 币
474 元
贡献
237 点
发表于 2017-2-27 17:15:33 | 显示全部楼层
确实是的,按照单精度数组,每个元素4字节,一个数组81亿个元素,共30多G
天下英雄出我辈,一入江湖岁月催。

鸿图霸业谈笑间,不胜人生一场醉。

35

帖子

11

主题

0

精华

熟手

F 币
129 元
贡献
118 点
 楼主| 发表于 2017-2-27 17:19:32 | 显示全部楼层
Jackdaw 发表于 2017-2-27 17:15
确实是的,按照单精度数组,每个元素4字节,一个数组81亿个元素,共30多G

那该怎么解决呢?单纯的减小数组的话,我算的东西就失去意义了

63

帖子

9

主题

0

精华

专家

超凡脱俗

F 币
474 元
贡献
237 点
发表于 2017-2-27 18:32:38 | 显示全部楼层
little_kar 发表于 2017-2-27 17:19
那该怎么解决呢?单纯的减小数组的话,我算的东西就失去意义了

修改算法内容,不要将数组全部放在内存里;或者换用满足要求的机器。
天下英雄出我辈,一入江湖岁月催。

鸿图霸业谈笑间,不胜人生一场醉。

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

发表于 2017-2-28 08:37:37 | 显示全部楼层
本帖最后由 pasuka 于 2017-2-28 10:24 编辑

1 KB = 1024 Bytes
1 MB = 1024 KB
1 GB = 1024 MB之前算的不对,修正一下。。。
双精度维数90000的矩阵,占用计算机内存8.1e9*8/1024/1024/1024约等于60.35GB
改成动态分配数组,那么64位的操作系统和64位的Fortran编译器理论上可以分配这么大内存,但是lz的机器内存只有8G,相差一个数量级
还是修改算法吧

63

帖子

9

主题

0

精华

专家

超凡脱俗

F 币
474 元
贡献
237 点
发表于 2017-2-28 08:45:35 | 显示全部楼层
pasuka 发表于 2017-2-28 08:37
1 Byte = 8 Bits

1 KB = 1024 Bytes

算错了吧,双精度要占8字节,一个数组81亿个元素,字节总数为8×81E8
天下英雄出我辈,一入江湖岁月催。

鸿图霸业谈笑间,不胜人生一场醉。

2035

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1658 元
贡献
711 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2017-2-28 08:51:16 | 显示全部楼层
90000*90000*8/1024/1024/1024=60GB

1

帖子

0

主题

0

精华

新人

F 币
22 元
贡献
5 点
发表于 2022-3-26 15:37:11 | 显示全部楼层
请问楼主是怎么解决的,我也遇到了相同的问题
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2025-3-24 02:22

Powered by Tencent X3.4

© 2013-2025 Tencent

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