Fortran 调用BLAS函数
这里有一个简单的程序Fortran 调用BLAS函数,fortran,blas,Fortran,Blas,这里有一个简单的程序 PROGRAM MAIN implicit none integer, PARAMETER :: N=10 real*8 :: A(N) real*8 :: x=0.1D0 integer :: i=1 Do i=1,N A(i)=i end do call dscal(N,x, A, 1) x=dasum(N,A,1) END PROGRAM MAIN 我用命令编译 gfortran test.f90 -o test -O1 -I /usr/include/
PROGRAM MAIN
implicit none
integer, PARAMETER :: N=10
real*8 :: A(N)
real*8 :: x=0.1D0
integer :: i=1
Do i=1,N
A(i)=i
end do
call dscal(N,x, A, 1)
x=dasum(N,A,1)
END PROGRAM MAIN
我用命令编译
gfortran test.f90 -o test -O1 -I /usr/include/ -L /usr/lib -lblas
虽然调用子例程dscal
没有问题,但函数dasum
我应该包括一个特定的文件来定义BLAS函数吗?对于函数,您需要手动指定返回值(如果您觉得很时髦,还可以选择一个
外部
):
此外,请不要使用
real*8
。它不符合标准,不便于携带,而且很容易混淆。使用kind
参数定义精度,例如:
real(kind=kind(1.d0))
等等。如果可以使用
ISO_Fortran_env模块
,请使用其常量REAL32
和REAL64
您使用哪种BLAS实现?供应商通常在模块中为过程提供接口。@francescaluslibblas.so.3
库在正确编译时是否链接到可执行文件中。我是否应该手动指定我使用的所有BLAS/LAPACK函数的返回值?有没有包含这些定义的文件?原则上是的。但是,有些实现提供了可用于此目的的模块。MKL提供。
real*8,external :: dasum
real(kind=kind(1.d0))