如何解决隐含的 DO 循环编译性能
以下隐含的 Do-loop 在编译时产生糟糕的性能
haarWPhi2D = reshape([((((((2**(-j/2))*haarWaveletPhi((2**j)*(m*dx)-k))* &
((2**(-j/2))*haarWaveletPhi((2**j)*(n*dt)-l)),&
m = -grid_size,grid_size),k = -grid_size,&
n = 0,num_time_steps),l = 0,num_time_steps)],shape(haarWPhi2D))
我不明白为什么编译非常慢,并且取决于finals的价值甚至可能永远无法完成编译。例如,其中一些是 100。
我不是专家,但我希望在任何情况下性能都会在运行时而不是编译时受到影响。
Compiler version: GCC version 9.3.0
Compiler options: -mtune=generic -march=x86-64 -fpre-include=/usr/include/finclude/math-vector-fortran.h
--更新--
这是一个可以用来证明问题的简单案例
program main
implicit none
integer :: m,n
integer :: k = 0
integer :: l = 0
integer,parameter :: num_time_steps = 100
integer,parameter :: grid_size = 100
real :: haarWPhi2D(-grid_size:grid_size,-grid_size:grid_size,0:num_time_steps,0:num_time_steps)
haarWPhi2D = reshape([((((1,&
m = -grid_size,&
n = 0,shape(haarWPhi2D))
end program main
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。