fortran 90中矩阵的最大大小避免了分段错误

hba*_*ega 5 fortran matrix fortran90

1)fortran 90代码中NxN矩阵中N的最大值是多少,这样就不会出现分段错误?

例如,当我使用大小为2 ^ 8 x 2 ^ 8的矩阵并将它们用于乘法(使用内在的'matmul'函数)时,我没有任何问题.

但是,当我使用2 ^ 12 x 2 ^ 12矩阵时,我没有发现任何编译错误,但是我在程序中间出现了分段错误.

我是否耗尽了内存分配,或者我的代码中可能存在错误?

我使用了动态分配,我使用64位RedHat OS和64 GB RAM.

2)最大大小也取决于编译器或系统配置?

提前致谢.

[除非真的需要回答,否则请不要让我粘贴.我相信我的问题很笼统.]

Ale*_*ogt 4

(2) 最大可分配大小取决于您的主内存,数组构造函数的最大大小(对于 gfortran)默认为 65535,可以通过 进行设置-fmax-array-constructor=n,请参见此处

(1) 这很容易计算:

双精度复数变量为 16 字节。因此,如果您有一个N x N矩阵和 64GB RAM,这将导致N = \sqrt ( 64 GB / 16 B ) \approx 63245.

因此,对于双精度复数值,您受到主内存的限制。

Reals(通常)对于单精度为 4 字节,对于双精度为 8 字节。单精度复数变量使用 8 字节。