我正在使用ctypes
模块将英特尔MKL加载到python中,然后我想调用一个需要openmp并行化的例程(在我的情况下为pardiso
)
我在英特尔网站上找到了this有用的链接,详细说明了这个过程,我可以运行他们的示例代码,但是当我运行我自己的使用openmp线程函数的示例时,程序崩溃并显示消息< / p>
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库(intel版本)的路径。
这里的魔术是什么?
请注意,虽然我也使用numpy
,但我没有针对mkl构建numpy
。但我怀疑这应该是重要的,因为我应该能够从mkl调用东西,而不是首先使用numpy做任何事情。
答案 0 :(得分:3)
NVM,原来我安装了旧版MKL。
按照我为10.3之前的版本提供的链接上的说明,我已经启动并运行了。