0

我有一个csv包含大约 200 万行和大约 150 列数据的文件。总文件大小约为 1.3 GB。那是大约 3 亿个数组成员。

我从一个 350 万行的文件开始,通过反复试验了解到,FORTRAN除非数组定义为 390 万或更少,否则它甚至无法编译。400万,没办法。总线错误/核心转储。

所以无论如何,我认为我的 200 万行文件会起作用。我读了几篇关于 2 GB 限制的帖子。但是,当我在读取数据时打印出行号时,在它结束之前我只能达到 250,000 左右。奇怪的是,我有一个几乎相同的文件(使用了 split 命令),并且在退出之前它只达到了 85,000。不知道为什么如此不同,每行字符数相同。

我能做些什么来读取这些数据吗?将所有数据编译数百次将是一个巨大的痛苦。

4

1 回答 1

2

这不是 Fortran 本身的属性,而是您的特定编译器和操作系统的属性。这就是您应该提供该信息的原因。

重新总线错误:很可能数组被放置在堆栈上,并且您的堆栈空间已用完。各种操作系统提供了增加堆栈大小的方法。许多编译器提供选项以便将大型数组放入堆中。您也可以尝试将数组声明为“可分配”并分配它。最后一个建议假设您使用的是 Fortran 95 编译器,而不是 FORTRAN 77 编译器。

还有如何声明用于索引的整数变量。如果程序中的循环超过 2,147,483,647,则需要使用大小超过四个字节的变量。我们只能猜测,因为您没有显示任何源代码。

于 2012-10-24T06:21:04.673 回答