我刚开始使用Fortran,并且在程序中使用来自(?)LAPACK的BLAS模块时遇到问题。
我正在使用Ubuntu 18.04,我已经通过命令sudo apt-get install libblas-dev liblapack-dev
安装了(?)LAPACK和BLAS软件包。我还从http://www.netlib.org/lapack/网站下载了LAPACK,并根据this video进行了安装。
我的程序应该使用blas_sparse
模块,所以我写了这样的东西:
program example
use blas_sparse
implicit none
! some code ...
end program example
我正在尝试通过以下命令使用example.F90
来编译代码(gfortran
):
gfortran example.F90 -llapack -lblas
类似于this example video(1:11)。但是,它不起作用,编译器将返回:
example.F90:3:8:
use blas_sparse
1
Fatal Error: Can't open module file ‘blas_sparse.mod’ for reading at (1): No such file or directory
这是什么问题?我看到三个潜在的原因:
ad。 1。
也许我应该在代码中添加一些名为blas_sparse
的模块?此外,它只是将问题转移到另一个地方,因为我仍然需要以某种方式从BLAS导入程序。不幸的是,我真的不知道use
命令如何工作,所以我不知道我应该尝试改变什么。
ad。 2。
也许我的编译器只是不知道-llapack
和-lblas
库在哪里。我试图使用
gfortran example.F90 -llapack -lblas -L/usr/local/lib
命令,因为在安装LAPACK和BLAS时,我已经创建了指向liblapack.a
和liblapack.a
的符号链接(请参见广告3)。我不知道确切的-llapack
和-lblas
标志是什么,这使我很难检查编译器是否可以“看到”它们。
ad。 3。 我在计算机上安装BLAS和LAPACK的操作是:
:
tar zxvf lapack-3.8.0.tar.gz
cd lapack-3.8.0/
cp make.inc.example make.inc
make blaslib
make lapacklib
sudo ln -s /home/Download/lapack-3.8.0/liblapack.a /usr/local/lib/liblapack.a
sudo ln -s /home/Download/lapack-3.8.0/librefblas.a /usr/local/lib/librefblas.a
并通过apt-get
安装它:
sudo apt-get install libblas-dev liblapack-dev
非常感谢您为解决此问题提供的帮助。
编辑:
我实际上发现我应该使用BLAST website中的.mod
,blas_sparse.f90
和blas_sparse_namedconstant.f90
文件来创建这些blas_sparse_proto.h
文件。我刚刚将它们中的前两个作为模块添加到我的代码中,并且gfortan编译器会创建正确的(我希望).mod
文件。但是,第三个是用C语言编写的,所以我不能仅仅将其放入代码中。
所以现在的问题是如何用我的代码绑定.h
文件。我需要创建一些makefile
还是编译.h
文件来创建.mod
文件吗?
EDIT2:
看来我只是没有从BLAST website ...安装稀疏BLAS ...
答案 0 :(得分:1)
您不仅在使用大多数教程,问题和答案所谈到的简单的常规BLAS。您实际上是通过模块使用现代的Fortran界面。
大多数编译器使用.mod文件作为模块描述,您必须告诉编译器它将在何处为稀疏BLAS找到这些文件。在gfortran中,您可以使用-Ipath
进行操作,其中path
是这些.mod文件的路径。这与相关问题Is sparse BLAS not included in BLAS?