Я использую модуль 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 (версия intel).
В чем здесь фокус?
Обратите внимание, что хотя я также использую numpy
, я не построил numpy
против MKL.Но я сомневаюсь, что это должно иметь значение, потому что я должен быть в состоянии звонить вещи из MKL, не делая ничего с NumPy в первую очередь.