Fortran Coder

查看: 2673|回复: 3
打印 上一主题 下一主题

[数值问题] 大数组的生成和reshape出错

[复制链接]

2

帖子

1

主题

0

精华

新人

F 币
17 元
贡献
7 点
跳转到指定楼层
楼主
发表于 2022-5-25 23:17:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 kyra 于 2022-5-26 08:44 编辑

[Fortran] 纯文本查看 复制代码
01program arraymult
02 
03  implicit none
04  integer, parameter:: N=2000
05  integer :: i,j
06  real(16),  dimension(N,N):: a=0._16, b=0._16,  c0=0._16, c1=0._16
07!  real(16), dimension(N*N):: aa=0, bb=0, cc=0
08  character (len=20):: date,time
09  real :: tt0,tt1
10 
11   call date_and_time(date,time)
12   print *, "date=", date, ";  time=", time
13   call cpu_time(tt0)
14   a=reshape([(50._16-(N**2-1._16)/2.+i,i=1,N**2)],[N,N])
15   b=reshape([(100._16-(N**2-1._16)/2.+i,i=1,N**2)],[N,N])
16!   aa=reshape(a,[N*N])
17!   bb=reshape(b,[N*N])
18   call cpu_time(tt1)
19   print *, "date=", date, ";  time=", time
20   print *, "reshape spend=", tt1-tt0
21   call date_and_time(date,time)
22   print *, "date=", date, ";  time=", time
23   call cpu_time(tt0)
24   c0=matmul(a,b)
25!   c0=matmul(c0,b)
26!   c0=matmul(c0,b)
27!   c0=matmul(c0,b)
28!   c0=matmul(c0,b)
29!   c0=matmul(c0,b)
30!   c0=matmul(c0,b)
31!   c0=matmul(c0,b)
32   call date_and_time(date,time)
33   call cpu_time(tt1)
34   print *, "date=", date, ";  time=", time
35   print *, "multi spend=", tt1-tt0
36!  print *,"complete first"
37 
38end program


gfortran 编译没问题,运行不出错。但是Flang 编译后运行会出segment fault, ifort 好像也会出。到底是啥问题呢?
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

2

帖子

1

主题

0

精华

新人

F 币
17 元
贡献
7 点
沙发
 楼主| 发表于 2022-5-25 23:21:30 | 只看该作者
貌似N=2000太大了, gfortran 编译时候加了选项-fmax-array-constructor=5000000 , flang 和ifort 要加啥选项呢

838

帖子

2

主题

0

精华

大宗师

F 币
3937 元
贡献
2339 点
板凳
发表于 2022-5-26 08:29:39 | 只看该作者
改为动态数组,根本上解决问题。

268

帖子

0

主题

0

精华

版主

World Analyser

F 币
749 元
贡献
526 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
地板
发表于 2022-5-26 08:43:10 | 只看该作者
   a=reshape([(50._16-(N**2-1._16)/2.+i,i=1,N**2)],[N,N])
   b=reshape([(100._16-(N**2-1._16)/2.+i,i=1,N**2)],[N,N])

这两个语句非常吃堆栈,建议还是老老实实的Do循环
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2025-5-1 15:16

Powered by Discuz! X3.4

© 2013-2025 Comsenz Inc.

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