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
答案 0 :(得分:1)
我已将计时功能更改为system_clock(),结果结果是(我在一个程序中运行了五次)
乘法时间:92毫秒
乘法时间:92毫秒
乘法时间:89ms
乘法时间:85ms
乘法时间:94ms
它与Numpy相似,但仍比Julia慢20%。