为什么Fortran在julia基准测试“rand_mat_mul”中速度慢?

时间:2015-02-11 09:09:52

标签: numpy fortran julia blas

Julia(http://julialang.org/)主页上的基准测试结果显示,Fortran在" rand_mat_mul"中比Julia / Numpy慢约4倍。基准。

我无法理解为什么fortran在从同一个fortran库(BLAS)调用时速度较慢?

我还对矩阵乘法进行了简单的测试,演变了fortran,julia和numpy,得到了类似的结果:

朱莉娅

n = 1000; A = rand(n,n); B = rand(n,n);
@time C = A*B;
  

>>已用时间:0.069577896秒(已分配7 MB)

IPython中的Numpy

from numpy import *
n = 1000; A = random.rand(n,n); B = random.rand(n,n);
%time C = dot(A,B);
  

>>壁挂时间:98毫秒

的Fortran

PROGRAM TEST

IMPLICIT NONE
INTEGER, PARAMETER :: N = 1000
INTEGER :: I,J
REAL*8 :: T0,T1

REAL*8 :: A(N,N), B(N,N), C(N,N)

CALL RANDOM_SEED()
DO I = 1, N, 1
    DO J = 1, N, 1
        CALL RANDOM_NUMBER(A(I,J))
        CALL RANDOM_NUMBER(B(I,J))
    END DO
END DO

call cpu_time(t0)
CALL DGEMM ( "N", "N", N, N, N, 1.D0, A, N, B, N, 0.D0, C, N )
call cpu_time(t1)

write(unit=*, fmt="(a24,f10.3,a1)") "Time for Multiplication:",t1-t0,"s"

END PROGRAM TEST
  

gfortran test_blas.f90 libopenblas.dll -O3& A.EXE

     

>>乘法时间:0.296s

1 个答案:

答案 0 :(得分:1)

我已将计时功能更改为system_clock(),结果结果是(我在一个程序中运行了五次)

  

乘法时间:92毫秒

     

乘法时间:92毫秒

     

乘法时间:89ms

     

乘法时间:85ms

     

乘法时间:94ms

它与Numpy相似,但仍比Julia慢20%。