山林悍匪 发表于 2014-9-8 16:43:35

allocate 分配三维数组失败

附件里面有f90的文件和一个参数卡(txt),这是一个有限差分的程序(大家如果没有遇到过这类东西,请忽略这个名字)。
我用allocate分配若干个三维数组(从209~236行),数组大小300*300*300,不知道什么原因他只能分配到第八个(第217行),当分配第九个的时候就显示失败了,stat返回值为41,但是后面另外的一些二维数组和一位数组申请又没问题,所以应该不是内存大小的限制,而且我也拿到32G内存机器上运行也是一样的情况,我把文件放在附件里了,麻烦版主帮忙看看,我自己是在找不到问题出在哪。代码并不繁琐,刚刚把变量定义玩,开始allocate的时候就出现的问题。

山林悍匪 发表于 2014-9-8 16:44:43

这个是代码,f90的

山林悍匪 发表于 2014-9-8 16:45:41

这个是参数卡

vvt 发表于 2014-9-8 19:11:07

双精度每个数据8字节。
300*300*300*8 = 205.99MB

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

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

山林悍匪 发表于 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内存的机器上也是同样的啊

fcode 发表于 2014-9-8 21:11:00

主要是你的编译器是否是64位的

山林悍匪 发表于 2014-9-8 21:28:25

本帖最后由 山林悍匪 于 2014-9-8 21:29 编辑

fcode 发表于 2014-9-8 21:11
主要是你的编译器是否是64位的

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

fcode 发表于 2014-9-8 21:49:50

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

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

山林悍匪 发表于 2014-9-8 21:52:11

fcode 发表于 2014-9-8 21:49
IVF 有32位版本,也有64位版本。
64位版本同时也带有32位版本,需要选择。
这个你得自己检查一下 ...

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

山林悍匪 发表于 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
页: [1] 2
查看完整版本: allocate 分配三维数组失败