使用lapack的dgemm(链接器错误)

时间:2014-02-15 21:39:01

标签: fortran lapack

如何通过适用于Fortran的Lapack软件包将两个矩阵相乘?我在ubuntu中使用gfortran编译器。 我的代码不起作用:

program main

integer, parameter :: n = 10
double precision :: alpha = 1.0, beta = 0.0
real, dimension(10,10) :: a

do i1 = 1,n
  do j1 = 1,n
    a(i1,j1) = j1 + (i1-1)*n
   end do
end do

call cpu_time(start)

call DGEMM('N', 'N', n, n, n, alpha, a, n, a, n, beta, a, n)

call cpu_time(end)
print *, end - start

end program main

我用过:

gfortran 0.f90 -llapack

它返回了:

/tmp/ccPy78g5.o: In function `MAIN__':
0.f90:(.text+0x110): undefined reference to `dgemm_'
collect2: ld returned 1 exit status

1 个答案:

答案 0 :(得分:2)

错误消息表示您的编译器(gfortran)无法找到lapack或更确切地说dgemm。请确保,lapack在你的道路上。或者(我假设您使用的是Ubuntu Linux),您可以尝试-lblas(安装后,当然 - afaik ubuntu遵循不同的命名约定):

gfortran 0.f90 -lblas -llapack

修改

或者,您可以直接将路径作为参数传递给库。默认情况下,gfortran会在`/ usr / local / lib /``中查找指定的库。如果库位于其他位置,您可以使用类似

的内容
gfortran 0.f90 /path/to/my/library.a