Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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 用Fortran提高计算速度_Performance_Optimization_Fortran_Gfortran - Fatal编程技术网

Performance 用Fortran提高计算速度

Performance 用Fortran提高计算速度,performance,optimization,fortran,gfortran,Performance,Optimization,Fortran,Gfortran,我有一些基本的psuedo代码,如下所示 PROGRAM PSUEDOEXAMPLE IMPLICIT NONE !Define all types !Load some data into arrays: Array_I, Array_J !Do Loops do i = 1,10 xi = Array_I(i,1) yi = Array_I(i,2) zi = Array_I(i,3) do j =1,10 xj = Array_J(j,1)

我有一些基本的psuedo代码,如下所示

PROGRAM PSUEDOEXAMPLE
IMPLICIT NONE
!Define all types

!Load some data into arrays: Array_I, Array_J


!Do Loops
do i = 1,10
   xi = Array_I(i,1)
   yi = Array_I(i,2)
   zi = Array_I(i,3)

   do j =1,10
      xj = Array_J(j,1)
      yj = Array_J(j,2)
      zj = Array_J(j,3)

      separation = ((xi - xj)**2 + (yi-yj)**2 +(zi-zj)**2)**0.5

   enddo

enddo



END PROGRAM PSUEDOEXAMPLE

我可以将单个
I
-步所需的时间定为~0.3秒。减少这一时间的最佳方法是什么?我可以看出,删除平方根可能是有效的。我正在使用gfortran作为编译器。

您可能需要提供一些有关您正在使用的编译器标志的信息,可能还需要提供一些有关编译器版本和系统的信息(这将有助于人们比较您的系统和他们的系统上的时间)。您可能希望尝试使用
sqrt
函数而不是
**0.5
,更具体一些可以帮助编译器(虽然在这里可能没有太大影响。我认为您还需要提供更多有关如何计时的详细信息--有好的方法和坏的方法!最后,您能否显示
!Define all types
的实际代码而不是此注释?我可以看出,删除平方根可能会很有效,删除所有代码可以有效地加快程序的速度,但这可能不是一个有效的步骤……你真正想做什么?如果你有一个多核CPU,OpenMP可能是一个选项,因为这个问题是对称的,你可以通过只做一半的计算来加快计算速度(使用
do j=i+1,10
作为内部循环)@haraldkl
J
点集与
I
点集(不一定)相同。如果他们遵循您的建议,则不会发现与点
I(10)
的分离。