从Python调用MKL的线程函数:找不到openmp库?
我正在使用 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_PATH
和 LD_LIBRARY_PATH
中,但没有成功,尽管这些路径中都包含了 mkl 库和 openmp 库(英特尔版本)。
这里有什么魔法技巧吗?
需要注意的是,虽然我也在使用 numpy
,但我并没有把 numpy
构建为与 mkl 兼容。不过我怀疑这应该没关系,因为我应该能够直接调用 mkl 的内容,而不需要先处理 numpy。
1 个回答
3
没关系,原来我安装的是旧版本的MKL。
按照我给的链接上关于10.3之前版本的说明,我把它搞定了。