我正在使用 ctypes
模块将英特尔 MKL 加载到 python 中,然后我想调用一个需要 openmp 并行化的例程(pardiso
,在我的例子中)
我找到了 this 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
我已尝试将英特尔 MKL 库路径(和“正常”英特尔库路径)添加到 LD_RUN_PATH
和 LD_LIBRARY_PATH
,以无济于事,尽管在这些路径中同时包含 mkl 库和 openmp 库(英特尔版本)。
这里的魔术是什么?
请注意,虽然我也使用 numpy
,但我没有针对 mkl 构建 numpy
。但我怀疑这是否重要,因为我应该能够从 mkl 中调用内容,而无需首先对 numpy 进行任何操作。
最佳答案
NVM,原来我安装了旧版本的 MKL。
按照我为早于 10.3 的版本提供的链接上的说明,我启动并运行了它。
关于python - 从 python : openmp library not found? 调用 MKL 的线程函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8995518/