如何通过适用于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
答案 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