Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 隐含DO循环编译性能_Performance_Compiler Errors_Fortran_Gfortran_Do Loops - Fatal编程技术网

Performance 隐含DO循环编译性能

Performance 隐含DO循环编译性能,performance,compiler-errors,fortran,gfortran,do-loops,Performance,Compiler Errors,Fortran,Gfortran,Do Loops,以下隐含的Do循环在编译时产生了糟糕的性能 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, grid_size), & n = 0, num_time_steps), l =

以下隐含的Do循环在编译时产生了糟糕的性能

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, grid_size), &
   n = 0, num_time_steps), l = 0, num_time_steps)], shape(haarWPhi2D))
我不明白为什么编译速度非常慢,取决于期末考试的价值,编译可能永远也不会完成。例如,其中一些人的年龄为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, grid_size), k = -grid_size, grid_size), &
                n = 0, num_time_steps), l = 0, num_time_steps)], shape(haarWPhi2D))

end program main

您的类型声明看起来不正确。为什么人们认为一切都需要在一行中完成?有时隐含循环不如显式循环优化。尝试独立于重塑对二级数组进行计算可能值得一试?类型声明不会不正确,因为正如我所说的,对于较低的final值,编译成功了。我的问题与编译时受到影响而运行时不受影响这一事实有关。一旦编译完成,计算速度非常快。你没有抓住要点。您没有提供足够的信息,以便有人调查此问题。特别是,我编写了gfortran的一些片段,这些片段扩展了数组构造函数并进行了简化(即常数折叠)。祝你好运