12

例如,我可以在我的 Ubuntu 14.04 上同时安装AtlasOpenBlasMKL并在不重新编译Caffe的情况下在它们之间切换吗?

4

3 回答 3

8

当然,您必须安装它们,并在 Ubuntu/Debian 发出命令

update-alternatives --config libblas.so.3

您将获得编号的备选方案列表,并且可以轻松地在它们之间切换

链接:https ://wiki.debian.org/DebianScience/LinearAlgebraLibraries

于 2015-11-23T15:48:57.467 回答
6

您也可以在不更改系统范围设置的情况下执行此操作,例如通过将要使用的库添加到LD_PRELOADLD_LIBRARY_PATH环境变量。此路径上的第一个库将是用于解析符号的库。

例如,您可以运行

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

您可以看到,这种方法作为不同实现的基准测试脚本的一部分非常有用,因为它不会影响基准测试环境本身。例如(在 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

这种基于动态链接的方法适用于编译程序所针对的任何其他共享库。

于 2015-11-24T08:31:01.860 回答
5

是的你可以。您只需要使用动态库链接。这libblas.so.3是一个软链接/etc/alternatives/libblas.so.3 ,它又指向BLAS库实现

例如,如果您安装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

安装后Openblassudo 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

当然,您可以使用自己的软链接到您的库构建。

于 2015-11-23T15:38:17.287 回答