从Python调用MKL的线程函数:找不到openmp库?

3 投票
1 回答
2227 浏览
提问于 2025-04-17 11:01

我正在使用 ctypes 模块把 Intel MKL 加载到 Python 中,然后我想调用一个需要使用 openmp 并行处理的例程(在我的例子中是 pardiso)。

我在 Intel 网站上找到了一些有用的链接,详细介绍了这个过程,我可以运行他们的示例代码,但当我运行自己的示例,使用 openmp 线程函数时,程序崩溃,并显示以下信息:

python: symbol lookup error: /opt/intel/Compiler/11.1/072/mkl/lib/em64t/libmkl_intel_thread.so: undefined symbol: omp_get_num_procs

我强烈怀疑加载 libmkl_rt.so 时没有正确触发 libiomp5.so 的加载。

我尝试将 Intel MKL 库的路径(以及“普通”的 Intel 库路径)添加到 LD_RUN_PATHLD_LIBRARY_PATH 中,但没有成功,尽管这些路径中都包含了 mkl 库和 openmp 库(英特尔版本)。

这里有什么魔法技巧吗?

需要注意的是,虽然我也在使用 numpy,但我并没有把 numpy 构建为与 mkl 兼容。不过我怀疑这应该没关系,因为我应该能够直接调用 mkl 的内容,而不需要先处理 numpy。

1 个回答

3

没关系,原来我安装的是旧版本的MKL。

按照我给的链接上关于10.3之前版本的说明,我把它搞定了。

撰写回答