我正在使用该ctypes
模块将英特尔 MKL 加载到 python 中,然后我想调用一个需要 openmp 并行化的例程(pardiso
在我的情况下)
我在详细介绍该过程的英特尔网站上找到了这个有用的链接,我可以运行他们的示例代码,但是当我运行我自己的使用 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
,但我没有numpy
针对 mkl 构建。但我怀疑这是否重要,因为我应该能够从 mkl 调用东西而无需首先对 numpy 做任何事情。