我需要声明一个包含83000行和83000列的矩阵。 当我以下面的形式声明它时:
double precision,allocatable :: MAT(:,:)
allocate(MAT(83000,83000))
gGHran从MinGW 32位编译代码是成功的,但是当我运行* .exe时,我收到以下错误:
integer overflow when calculating the amount of memory to allocate
如果我更改矩阵的维度,即(nrow=100,ncol=100)
,一切正常,所以代码似乎是正确的。
我的问题是,当尺寸很大时,如何声明矩阵?
答案 0 :(得分:2)
32位编译器无法处理如此大的数组。 83000 * 83000超过最大32位整数值2147483648,因此无法计算数组的大小。您必须使用64位编译器。 (即使在默认设置Allocate large array in PGI Fortran中的某些64位编译器中也会发生这种溢出,但gfortran应该没问题。)
矩阵(56 GB)也远远超过了32位进程可寻址的最大内存量。