gpt4 book ai didi

arrays - 在 gfortran 中分配大矩阵时整数溢出

转载 作者:可可西里 更新时间:2023-11-01 11:46:48 26 4
gpt4 key购买 nike

我需要声明一个具有 83000 行和 83000 列的矩阵。当我以以下形式声明它时:

double precision,allocatable :: MAT(:,:)
allocate(MAT(83000,83000))

通过 gfortran 从 MinGW 32 位编译代码是成功的,但是当我运行 *.exe 时,我收到以下错误:

 integer overflow when calculating the amount of memory to allocate 

如果我改变矩阵的维度,即 (nrow=100,ncol=100),一切正常,所以代码似乎是正确的。

我的问题是,当矩阵的维度很大时,我该如何声明它?

最佳答案

32 位编译器无法处理如此大的数组。 83000 * 83000 大于最大 32 位整数值 2147483648,因此无法计算数组的大小。您必须使用 64 位编译器。 (即使在默认设置下的某些 64 位编译器中也会发生此溢出 Allocate large array in PGI Fortran 但 gfortran 应该没问题。)

矩阵 (56 GB) 也远远超过了 32 位进程可寻址的最大内存量。

关于arrays - 在 gfortran 中分配大矩阵时整数溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42835285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com