编译使用带有gfortran的英特尔MKL模块的代码

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

我想使用gfortran编译一些使用Mac上英特尔MKL库中的mlk_vsl.f90的代码。

我正在做以下事情: gfortran -o filename filename.f90 -I/${MKLROOT}/include

我收到此错误:

"Can't open module file 'mkl_vsl_type.mod" for reading at (1): No such file or directory"

我知道我必须创建.mod文件,但我不确定如何。

macos fortran gfortran intel-mkl
1个回答
1
投票

你正在编译的正确轨道(如果添加-c)。一些建议:

  1. 尝试添加-fno-range-check,这是让gfortran正确编译mkl_vsl模块所需的(编译主程序时自动创建的.mod文件)
  2. 不知道为MKLROOT设置了什么,你可能会有额外的反斜杠;试试-I${MKLROOT}/include

但是,对于链接,您可能需要其他库。查看如何链接的最简单方法是查看MKLROOT目录mkl/examples/vslf/source中的一个示例,其中包含使用mkl_vsl的源文件。在mkl/examples/vslf中,有一个makefile可以运行以生成可执行文件并打印链接行。使用make help获取更多信息。例如,使用gfortran和静态链接编译vslssort.f:make libintel64 compiler=gnu function=vslssort。请注意两个警告:链接行使用libmkl_intel_thread.a而不是libmkl_gnu_thread.a,它使用-J标志将创建的.mod文件放在必须在链接之前创建的不同目录中。

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