Fortran Coder

关于fortran处理大数组出现错误

查看数: 16815 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2015-1-15 00:03

正文摘要:

本帖最后由 我是一头牛 于 2015-1-15 00:56 编辑 各位朋友, 我现在用如下的程序把一个含有1024*1280*100个数字的txt文档读入fortran并且赋值给数组a,在这个过程中编译和运行都没有问题。 但是当我读入另一个含 ...

回复

楚香饭 发表于 2015-1-15 18:50:36
木有看到新的错误。

的确 read 读入有限制,具体多少看编译器说明。但肯定比 2G 小
pasuka 发表于 2015-1-15 10:55:49
我是一头牛 发表于 2015-1-15 09:12
将a改为动态数组 程序如下[mw_shl_code=fortran,true]program main
implicit none
integer,parameter::fg ...

在64位的Linux下开辟数组空间没有问题,应该是read语句一次性没法读入那么大的数据
若是改成循环形式,逐个读入数组a的数据呢?
另外,这么大数据,一次性读入真的有必要吗?
我是一头牛 发表于 2015-1-15 09:12:27
pasuka 发表于 2015-1-15 08:12
把变量a改成动态数组再试试看

将a改为动态数组 程序如下
[Fortran] 纯文本查看 复制代码
program main
implicit none
integer,parameter::fg=500
integer,dimension(1024*1280*fg)::a
open(12,file='xyyn.txt')
read(12,*)a
stop
end program
  错误如下
楚香饭 发表于 2015-1-15 08:34:13
1024*1280*500*4 = 2G
这还是二进制的数,写成文本,至少有 4GB。

大量的数据,建议你用二进制存储,读写速度会快很多很多很多。而且文件也小巧。

你真的需要全部读入内存吗?可否分批次读入?
pasuka 发表于 2015-1-15 08:12:14
把变量a改成动态数组再试试看

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

GMT+8, 2024-12-23 10:48

Powered by Tencent X3.4

© 2013-2024 Tencent

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