从python调用MKL的线程函数:找不到openmp库?
作者:互联网
我正在使用ctypes模块将Intel MKL加载到python中,然后我想调用一个需要openmp并行化的例程(在我的情况下为pardiso)
我在英特尔站点上发现了this有用的链接,该链接详细介绍了该过程,并且可以运行其示例代码,但是当我运行使用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库(intel版本).
这是什么魔术?
请注意,尽管我也使用numpy,但尚未针对mkl构建numpy.但是我怀疑这是否重要,因为我应该能够从mkl调用东西,而无需首先使用numpy进行任何操作.
解决方法:
NVM,事实证明我安装了旧版本的MKL.
按照我为10.3之前的版本提供的链接上的说明进行操作.
标签:ctypes,intel-mkl,openmp,python 来源: https://codeday.me/bug/20191201/2083705.html