如何在Fortran中使用(初始化、操作、从中获取输出)mkl句柄?

如何在Fortran中使用(初始化、操作、从中获取输出)mkl句柄?,fortran,handle,intel-fortran,intel-mkl,Fortran,Handle,Intel Fortran,Intel Mkl,我正在WSL中使用英特尔Fortran编译器,其安装目录为/opt/Intel。我想使用稀疏BLAS函数 下面是相关代码的一部分 double complex, allocatable :: H(:,:),Hvert(:,:),Hstar(:,:) allocate(H(dimH,dimH),Hvert(dimH,dimH),Hstar(dimH,dimH)) ! initialization of Hstar info = mkl_sparse_z_create_coo(Hstar, SP

我正在WSL中使用英特尔Fortran编译器,其安装目录为
/opt/Intel
。我想使用稀疏BLAS函数

下面是相关代码的一部分

double complex, allocatable ::  H(:,:),Hvert(:,:),Hstar(:,:)
allocate(H(dimH,dimH),Hvert(dimH,dimH),Hstar(dimH,dimH))

! initialization of Hstar
info = mkl_sparse_z_create_coo(Hstar, SPARSE_INDEX_BASE_ONE, m**L, m**L, 2**L, ind(1,:), ind(2,:), Hele)

! initialization of empty matrix
ind = 0
info = mkl_sparse_z_create_coo(Hvert, SPARSE_INDEX_BASE_ONE, m**L, m**L, 0, ind(1,1), ind(2,1), H)

! add A and B to form the final matrix
info = mkl_sparse_z_add(SPARSE_OPERATION_NON_TRANSPOSE, Hstar, 1d0, Hvert, H)
当我用下面的命令编译它时

ifort-xHost-parallel full.f90-o输出-lmkl_intel_lp64-lmkl_intel_thread-lmkl_spblas-lmkl_core-liomp5-lpthread-lm-qopenmp&./output
它给了我以下错误,即使我已经找到了库的来源

source /opt/intel/bin/ifortvars.sh -arch intel64 -platform linux
source /opt/intel/bin/compilervars.sh -arch intel64 -platform linux
full.f90(146):错误#6404:此名称没有类型,必须具有显式类型。[MKL_SPARSE_Z_CREATE_COO]
info=mkl\U sparse\U z\U create\U coo(Hvert,sparse\U INDEX\U BASE\U ONE,m**L,m**L,2**L,ind(1,:),ind(2,:),Hele)
------------^
full.f90(226):错误#6404:此名称没有类型,必须具有显式类型。[MKL_稀疏_Z_添加]
info=mkl\U sparse\U z\U add(稀疏操作、非转置、Hstar、1d0、Hvert、H)
------------^
full.f90(240):错误#6404:此名称没有类型,必须具有显式类型。[MKL_稀疏_Z_MV]
info=mkl\u稀疏z\u mv(稀疏操作非转置,1d0,H,稀疏矩阵类型,厄米特,psi(a,:),0d0,虚拟)
--------------^
full.f90的编译已中止(代码1)
我认为这是由于我不正确地链接到相关库以及将矩阵初始化为普通可分配数组造成的

我应该怎么做才能使用这些函数


此外,我不知道大写变量
SPARSE\u INDEX\u BASE\u ONE
是什么意思。我应该那样用吗

链接路径正确。你不需要链接-mkl_spblas。请始终参考MKL链接器顾问()。
我建议查看现有的sparse_z_csrmv.f90示例,该示例演示如何调用类似的sparse BLAS函数。这个例子被称为CSR,但不是COO格式,但在这种情况下并不重要

嗨,对不起,我在英特尔的网站上找不到稀疏的csrmv.f90,谷歌搜索也无济于事。你能告诉我在哪里可以找到它吗?请检查MKL包:MKLROOT/examples/spblasf/source\directory如果你没有安装这样的包:你可以从此页()免费获取MKL包,或者让我知道-我会给你这个例子。嗨,非常感谢!我在
/opt/intel/compilers_和_libraries_2019.5.281/linux/mkl/examples
中找到了它们。该文件位于
examples\u cluster\u f.tgz
中。谢谢!