Fortran Coder

查看: 7185|回复: 2

[数学库] 请教几个关于mkl库的编译问题

[复制链接]

13

帖子

4

主题

0

精华

入门

F 币
92 元
贡献
55 点
发表于 2021-8-5 11:07:05 | 显示全部楼层 |阅读模式
本帖最后由 joezhr 于 2021-8-5 11:07 编辑

各位前辈好,最近在Linux下用ifort编译多个.f90文件,由于代码中用到了openmp和mkl的函数,我参考了Inter Fortran Compiler Help中的内容,在编译时分别采用了如下的命令:
[Fortran] 纯文本查看 复制代码
ifort -qopenmp -o test file1.f90 file2.f90 ... filen.f90 

报错内容是:
xxx.f90:对'mkl_get_max_threads'未定义的引用
xxx.f90:对'pardiso_'未定义的引用

发现是忘记了包含mkl库头文件,于是在命令中加上了-mkl,即
[Fortran] 纯文本查看 复制代码
ifort -qopenmp -mkl -o test file1.f90 file2.f90 ... filen.f90 

又出现了新的报错:
ld:找不到 -lmkl_intel_lp64
ld:找不到 -lmkl_intel_thread
ld:找不到 -lmkl_intel_core

我搜索了一下,这里好像是缺少动态库,请问这些动态库是在mkl里本身存在的吗?是否是没有包含进来呢?

790

帖子

2

主题

0

精华

大宗师

F 币
3765 元
贡献
2255 点
发表于 2021-8-5 11:13:47 | 显示全部楼层
-I"${MKLROOT}/include"


-Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_ilp64.a ${MKLROOT}/lib/intel64/libmkl_intel_thread.a ${MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group -liomp5 -lpthread -lm -ldl

13

帖子

4

主题

0

精华

入门

F 币
92 元
贡献
55 点
 楼主| 发表于 2021-8-5 11:37:14 | 显示全部楼层
本帖最后由 joezhr 于 2021-8-5 17:22 编辑
li913 发表于 2021-8-5 11:13
-I"${MKLROOT}/include"

前辈您好,我在原命令中增加了您提供的代码后出现了以下报错:
ifort: error#10236: File not found: 'lib/intel64/libmkl_intel_ilp64.a
ifort: error#10236: File not found: 'lib/intel64/libmkl_intel_thread.a
ifort: error#10236: File not found: 'lib/intel64/libmkl_intel_core.a
请问这个应如何处理呢?
之后又尝试了OneAPI的Get Started Guide中提供的例子,将命令改成了
[Fortran] 纯文本查看 复制代码
ifort -qopenmp -mkl -o test file1.f90 file2.f90 ... filen.f90 -L${MKLROOT}/lib/intel64 -lmkl_intel_lp64-lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm -ldl

但依然提示找不到-lmkl_intel_lp64,-lmkl_intel_thread和-lmkl_intel_core

刚刚又尝试重新加载一遍OneAPI的环境变量,发现是指令后少了Intel64,经以下操作后问题解决:
[Fortran] 纯文本查看 复制代码
source /home/username/intel/oneapi/setvars.sh intel64

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-3-29 23:49

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表