Fortran Coder

查看: 27532|回复: 17
打印 上一主题 下一主题

[求助] allocate 分配三维数组失败

[复制链接]

39

帖子

8

主题

0

精华

熟手

F 币
249 元
贡献
142 点
跳转到指定楼层
楼主
发表于 2014-9-8 16:43:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
附件里面有f90的文件和一个参数卡(txt),这是一个有限差分的程序(大家如果没有遇到过这类东西,请忽略这个名字)。
我用allocate分配若干个三维数组(从209~236行),数组大小300*300*300,不知道什么原因他只能分配到第八个(第217行),当分配第九个的时候就显示失败了,stat返回值为41,但是后面另外的一些二维数组和一位数组申请又没问题,所以应该不是内存大小的限制,而且我也拿到32G内存机器上运行也是一样的情况,我把文件放在附件里了,麻烦版主帮忙看看,我自己是在找不到问题出在哪。代码并不繁琐,刚刚把变量定义玩,开始allocate的时候就出现的问题。
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

39

帖子

8

主题

0

精华

熟手

F 币
249 元
贡献
142 点
沙发
 楼主| 发表于 2014-9-8 16:44:43 | 只看该作者
这个是代码,f90的

3D.f90

57.13 KB, 下载次数: 10

代码

39

帖子

8

主题

0

精华

熟手

F 币
249 元
贡献
142 点
板凳
 楼主| 发表于 2014-9-8 16:45:41 | 只看该作者
这个是参数卡

3DPara.txt

903 Bytes, 下载次数: 3

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
地板
发表于 2014-9-8 19:11:07 | 只看该作者
双精度每个数据8字节。
300*300*300*8 = 205.99MB

8个这样的数组就是 1640MB,9个就是 1845MB

如果您的编译器和操作系统是 32 位的,可能分配不了。你需要64位的编译器,或者更节约内存的算法。

39

帖子

8

主题

0

精华

熟手

F 币
249 元
贡献
142 点
5#
 楼主| 发表于 2014-9-8 21:02:09 | 只看该作者
本帖最后由 山林悍匪 于 2014-9-8 21:04 编辑
vvt 发表于 2014-9-8 19:11
双精度每个数据8字节。
300*300*300*8 = 205.99MB


谢谢回复!
我用的编译器是Intel Fortran2011,我自己的电脑就是64位4G内存的,而且我拿到64位32G内存的机器上也是同样的啊

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1641 元
贡献
709 点

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

6#
发表于 2014-9-8 21:11:00 | 只看该作者
主要是你的编译器是否是64位的

39

帖子

8

主题

0

精华

熟手

F 币
249 元
贡献
142 点
7#
 楼主| 发表于 2014-9-8 21:28:25 | 只看该作者
本帖最后由 山林悍匪 于 2014-9-8 21:29 编辑
fcode 发表于 2014-9-8 21:11
主要是你的编译器是否是64位的


恩,应该是64位的,Intel Fortran2011不就是专门为64位准备的吗?

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1641 元
贡献
709 点

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

8#
发表于 2014-9-8 21:49:50 | 只看该作者
山林悍匪 发表于 2014-9-8 21:28
恩,应该是64位的,Intel Fortran2011不就是专门为64位准备的吗?

IVF 有32位版本,也有64位版本。
64位版本同时也带有32位版本,需要选择。
这个你得自己检查一下

39

帖子

8

主题

0

精华

熟手

F 币
249 元
贡献
142 点
9#
 楼主| 发表于 2014-9-8 21:52:11 | 只看该作者
fcode 发表于 2014-9-8 21:49
IVF 有32位版本,也有64位版本。
64位版本同时也带有32位版本,需要选择。
这个你得自己检查一下 ...

哦,是这样,我装的时候还真没注意,那我再看看
谢谢你的回答!

39

帖子

8

主题

0

精华

熟手

F 币
249 元
贡献
142 点
10#
 楼主| 发表于 2014-9-8 22:32:07 | 只看该作者
fcode 发表于 2014-9-8 21:49
IVF 有32位版本,也有64位版本。
64位版本同时也带有32位版本,需要选择。
这个你得自己检查一下 ...

fcode你好!我从新装了一遍ivf,但是整个安装过程并没有提示我选择32位或者64,我的vs是2010也没有提示选择64或者32
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-22 22:45

Powered by Tencent X3.4

© 2013-2024 Tencent

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