通过在fortran / MPI中使用索引变量来减少运行时间

时间:2015-09-02 05:20:58

标签: arrays performance fortran mpi

我在一些CFD代码中看到他们使用索引变量来访问不同的数组条目。以下是一个简短的例子:

integer :: i,j
integer :: im,ip
real,dimension(0:200,0:200) :: array

do i=1,199
   ip = i+1
   im = i-1
   do j=0:200
      var1(i) = 0.5 * ( array(ip,j) - array(i ,j) )
      var2(i) = 0.5 * ( array(i ,j) - array(im,j) )
   enddo
enddo

这有什么好处吗?关于运行时,如果我使用array(i+1,j)而不是array(ip,j)

,则会有所不同

1 个答案:

答案 0 :(得分:3)

理论上,你不必做200次加法,但只需要做一次加法

  do j=0,200

实际上,优化编译器应该能够为您优化这种用法。