Is it possible to switch between BLAS libraries without recompiling program?

本秂侑毒 提交于 2019-11-30 14:01:16

问题


For example can I have Atlas, OpenBlas, MKL installed on my Ubuntu 14.04 at the same time and switch between them without recompiling Caffe?


回答1:


Sure, you have to have them installed, and on Ubuntu/Debian issue command

update-alternatives --config libblas.so.3

You'll get numbered list of alternatives and could switch between them easily

Link: https://wiki.debian.org/DebianScience/LinearAlgebraLibraries




回答2:


Yes, you can. You just need to use dynamic library linking. The libblas.so.3 is a soft linking to /etc/alternatives/libblas.so.3 Which in turn points to the BLAS library implementation

For example if you installing Atlas (sudo apt-get install libatlas3-base):

/usr/lib/libblas.so.3 -> /etc/alternatives/libblas.so.3
/etc/alternatives/libblas.so.3 -> /usr/lib/atlas-base/atlas/libblas.so.3

while after installing Openblas (sudo apt-get install libopenblas-base):

/usr/lib/libblas.so.3 -> /etc/alternatives/libblas.so.3
/etc/alternatives/libblas.so.3 -> /usr/lib/openblas-base/libblas.so.3

Of course you can use your own soft link to your library builds.




回答3:


You could also do it without changing system wide settings, for example by adding the library you want to use to the LD_PRELOAD or LD_LIBRARY_PATH environment variables. The first library on this path will be the one used to resolve the symbols against.

For example, you could run with

LD_PRELOAD=/path/to/blas/lib.so ./my_executable_using_caffe

You can see that this approach would be extremely useful as part of a benchmarking script for different implementations since it doesn't affect the benchmarking environment itself. For example (in bash):

my_libraries=/path/to/blas1.so /path/to/blas2.so

for lib in $my_libraries
do
  LD_PRELOAD=${lib} ./my_executable_using_caffe
done

This approach, based on dynamic linking, applies to any other shared library your program is compiled against.



来源:https://stackoverflow.com/questions/33873211/is-it-possible-to-switch-between-blas-libraries-without-recompiling-program

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!