Fortran Coder

查看: 1799|回复: 8
打印 上一主题 下一主题

OpenMP并行FORTRAN嵌套循环问题

[复制链接]

159

帖子

2

主题

1

精华

大师

Vim

F 币
961 元
贡献
469 点

规矩勋章

楼主
发表于 2023-4-26 11:17:21 | 显示全部楼层
本帖最后由 Transpose 于 2023-4-26 11:23 编辑

[Fortran] 纯文本查看 复制代码
t1(nm,km(1)*km(2)*km(3),na,na)

这个数组占的内存大概是180G,应该是内存不足了
100*100*1*75*177*177=23496750000
23496750000/1e9=23.5
23.5*8=188GB

159

帖子

2

主题

1

精华

大师

Vim

F 币
961 元
贡献
469 点

规矩勋章

沙发
发表于 2023-4-26 16:42:22 | 显示全部楼层
感觉只能修改算法,减少内存的占用了,这么大的数组直接定义,不太合理
另外注意数组的列优先顺序,使用ifort的时候,极易产生临时数组,这也会导致内存不足
[Fortran] 纯文本查看 复制代码
t1(i,j,:,:) = th*(i-j+ic)

比如这一句,可能会产生临时数组

你的前一个程序,大量使用matmul,在ifort里面也是不提倡的,ifort的matmul优化不好,而且大量的产生临时数组

159

帖子

2

主题

1

精华

大师

Vim

F 币
961 元
贡献
469 点

规矩勋章

板凳
发表于 2023-4-27 09:04:19 | 显示全部楼层
这种数组传递方式需要写接口

http://fcode.cn/guide-103-1.html
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-18 11:54

Powered by Tencent X3.4

© 2013-2024 Tencent

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