We have python extension depending on the MKL. On attempt to update dependency to version 2021.2.0 we found that linker is not able to find mkl_rt library under Linux and Mac. On Windows everything is fiine.
It appeared, that in the recent MKL package only the files with ".so.1" suffix present (on Mac: ".1.dylib"). In the previous versions of the package there were also copies of these files with ".so" (".dylib") suffixes. The recent version works fine for runtime, but there's a a problem with the gcc (ld) linker: it looks for "mkl_rt.so" ("mkl_rt.dylib") exactly. Adding symbolic link with
ln -s mkl_rt.so.1 mkl_rt.so
to the package folder solves the problem. However, this requires additional steps on building in isolated environments and, in particular, requires changes in the building or CI scripts.
Is there more efficient way to make MKL visible to gcc/ld linker, than creating these symbolic links with building scripts? And what was the reason to change the naming scheme for shared libraries (besides disk space saving)?
Hi,
We have confirmed with the developers that the oneMKL devel package (mkl-devel) for PIP distribution on Linux and macOS does not provide dynamic libraries symlinks.
In the case of dynamic or single dynamic library linking with oneMKL devel package you must modify link line with oneMKL libraries full names and versions.
Example command for single dynamic library:
g++ mkl_sample.o /opt/intel/oneapi/mkl/latest/lib/intel64/libmkl_rt.so.1 -lpthread -lm -ldl
For more information:
https://software.intel.com/content/www/us/en/develop/documentation/get-started-with-mkl-for-dpcpp/top.html ( Refer to the step 1)
https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl/link-line-advisor.html ( Link Line Advisor)
链接已复制
Hi,
Please check the following path to find the required .so files :"/opt/intel/oneapi/mkl/2021.2.0/lib/intel64"
We were able to see the .so file as shown in the attached picture.
If you have not found the required files, try re-installing the oneAPI base toolkit and let us know if you face the same issue.
Regards
Rajesh.
I has been writing about the package on PyPi.org, see https://pypi.org/project/mkl/#files
This is what we have as python dependency.
Content of mkl-2021.2.0-py2.py3-none-manylinux1_x86_64.whl
We have to use the automatic MKL installation as a python dependency from PyPi in our package for our own setup and automatic continuous intergration tests. I just want to note, that the naming scheme changes in the recent PyPi package since the previous version breaks existing setup and CI scripts. Of course we are able to fix the scripts to adopt the new naming approach, but all other "MKL from PyPi" users will have to do that as well. And this unexpected change takes time and efforts to figure out and fix.
Regards, Dmitry (dvp)
Hi,
Thanks for letting us know. We are working on this internally and will get back to you.
Regards
Rajesh.
Hi,
We have confirmed with the developers that the oneMKL devel package (mkl-devel) for PIP distribution on Linux and macOS does not provide dynamic libraries symlinks.
In the case of dynamic or single dynamic library linking with oneMKL devel package you must modify link line with oneMKL libraries full names and versions.
Example command for single dynamic library:
g++ mkl_sample.o /opt/intel/oneapi/mkl/latest/lib/intel64/libmkl_rt.so.1 -lpthread -lm -ldl
For more information:
https://software.intel.com/content/www/us/en/develop/documentation/get-started-with-mkl-for-dpcpp/top.html ( Refer to the step 1)
https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl/link-line-advisor.html ( Link Line Advisor)
Hi,
Thanks for accepting as a Solution
As this issue has been resolved, we will no longer respond to this thread. If you require any additional assistance from Intel, please start a new thread. Any further interaction in this thread will be considered community only.
Have a Good day.
Regards
Rajesh.
