当然,你必须安装它们,并在Ubuntu/Debian issue命令
update-alternatives --config libblas.so.3
Run Code Online (Sandbox Code Playgroud)
您将获得编号的备选列表,并可以轻松地在它们之间切换
链接:https://wiki.debian.org/DebianScience/LinearAlgebraLibraries
是的你可以.您只需要使用动态库链接.这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
Run Code Online (Sandbox Code Playgroud)
安装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
Run Code Online (Sandbox Code Playgroud)
当然,您可以使用自己的软链接来构建库.
您也可以在不更改系统范围设置的情况下执行此操作,例如,将要使用的库添加到环境变量LD_PRELOAD
或LD_LIBRARY_PATH
环境变量中.此路径上的第一个库将是用于解析符号的库.
例如,你可以运行
LD_PRELOAD=/path/to/blas/lib.so ./my_executable_using_caffe
Run Code Online (Sandbox Code Playgroud)
您可以看到,这种方法作为不同实现的基准测试脚本的一部分非常有用,因为它不会影响基准测试环境本身.例如(在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
Run Code Online (Sandbox Code Playgroud)
这种方法基于动态链接,适用于编译程序的任何其他共享库.