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

时间:2017-09-20 16:57:31

标签: macos fortran gfortran intel-mkl

我想使用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文件,但我不确定如何。

1 个答案:

答案 0 :(得分:1)

您正在进行编译(如果添加-c)。一些建议:

  1. 尝试添加-fno-range-check,这是让gfortran正确编译mkl_vsl模块所需的(在编译主程序时自动创建.mod文件)
  2. 不知道为MKLROOT设置了什么,你可能会有额外的反斜杠;试试-I${MKLROOT}/include
  3. 但是,对于链接,您可能需要其他库。查看如何链接的最简单方法是查看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文件放在必须在链接之前创建的不同目录中。