Fortran Coder

346082*346082大数组debug时触发断点

查看数: 20343 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-4-16 09:54

正文摘要:

[Fortran] 纯文本查看 复制代码integer dim real(kind=8),allocatable::t(dim,dim),r(dim) dim=346082 allocate(t(dim,dim),r(dim)) 出现断点的地方时allocate中的r(dim),显示undefined pointer/array,但是t(dim, ...

回复

navoski 发表于 2022-1-19 22:24:10
胡文刚 发表于 2021-4-17 15:13
根据情况用其他计算方法代替。
嗯,除了内存,你还可以用硬盘存储数据。

使用动态数组随时写入文件、释放内存,有效。搞定了360000×3000×2的大数组。
SSDQBD 发表于 2021-12-12 20:09:13
楼主怎么解决的,我也遇到了类似的问题
Proteus 发表于 2021-4-23 15:57:07
dfct 发表于 2021-4-17 20:28
allocatable 的数组需要是假定形状的
尝试
[mw_shl_code=fortran,false]real(kind=8),allocatable :: t(:,: ...

已解决,谢谢你!
dfct 发表于 2021-4-17 20:28:57
allocatable 的数组需要是假定形状的
尝试
[Fortran] 纯文本查看 复制代码
integer dim
real(kind=8),allocatable::t(dim,dim),r(dim)
dim=346082
allocate(t(dim,dim),r(dim))

!=================
另,有名为 dim 的内置函数,虽然 Fortran 没有保留字,但是还是尽量避免与内置函数同名
可以考虑用 ndim 代替 dim
胡文刚 发表于 2021-4-17 15:13:25
本帖最后由 胡文刚 于 2021-4-17 15:27 编辑

根据情况用其他计算方法代替。
嗯,除了内存,你还可以用硬盘存储数据。

我在steam上买了一个《生化危机3重制版》,它有22GB那么大,占了这么大的硬盘空间,但内存里并没有22GB大小的数组。

富士康的工人每天需要处理3000多件装配件,但公司并没有给他们分配能装下3000多个装配件的桌子。你说怎么办呢?

我们国家有(约)14亿人口,每个人都有独一无二的身份证号码。但公安系统的电脑内存里,没有一个14亿大小的数组来记录他们的身份证号码。

此外,在60年代的时候,内存普遍只有64KB到128KB,航天飞机轨道计算的任务仍然被计算机正确的执行了。


Proteus 发表于 2021-4-17 11:17:17
vvt 发表于 2021-4-16 10:18
你的猜测没错,数组太大了。
346082*346082 这个数组,需要 958GB 的内存。

那有什么办法可以解决吗
vvt 发表于 2021-4-16 10:18:53
你的猜测没错,数组太大了。
346082*346082 这个数组,需要 958GB 的内存。

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

GMT+8, 2024-11-23 10:52

Powered by Tencent X3.4

© 2013-2024 Tencent

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