如何正确链接mkl接口与fortls

问题描述 投票:0回答:1

在我的项目中,我在

blas
实现下大量使用了
mkl
子例程,由于
Intel Advisor
,我在编译项目时没有问题,但我无法让
fortls
识别功能界面。

我尝试修改

Modern Fortran
扩展设置,添加到包含路径
/opt/intel/oneapi/mkl/latest/include/
,其中包含包含所有接口的文件
mkl_blas.fi
.mod
文件位于子文件夹
mkl/intel64/ilp64
中),但linter突出显示蓝色线
use blas95
表示在项目中找不到它,并且仍然要求
external
dgemm
的显式接口。

visual-studio-code fortran blas intel-mkl
1个回答
0
投票

fortls
无法读取
.mod
文件,因为每个编译器供应商都使用自定义格式来创建它们;它只能理解来源。如果您有 MKL 的源代码,您可以将它们添加到需要通过编辑解析选项进行解析的文件中,请参阅文档:
https://fortls.fortran-lang.org/options.html#sources-file-parsing
这将允许您对 MKL 界面进行悬停、查看、转到等操作。您可能需要将

fortls

扩展设置为有效的 Fortran 源。

话虽这么说,linter 和语言服务器 (fortls) 是两个不同的东西,因此有不同的选项。 linter 使用适当的编译器(默认为 gfortran)来模拟编译您的代码。我猜想 .mod 文件是用 

.fi

而不是

ifx
编译的,所以:

将 linter 设置为 ifx
  • 将包含 .mod 文件的目录(可以使用正则表达式)包含到 linter 中
  • 您的设置应该如下所示;

gfortran

© www.soinside.com 2019 - 2024. All rights reserved.