【发布时间】:2015-11-23 14:17:37
【问题描述】:
【问题讨论】:
-
@Shai 用 Caffe 对不同的 BLAS 库进行基准测试。
-
这是一项有趣的任务。如果您得出任何结论,最好在这里分享。
标签: c++ linux blas caffe openblas
【问题讨论】:
标签: c++ linux blas caffe openblas
当然,您必须安装它们,并在 Ubuntu/Debian 发出命令
update-alternatives --config libblas.so.3
您将获得备选方案的编号列表,并且可以在它们之间轻松切换
链接:https://wiki.debian.org/DebianScience/LinearAlgebraLibraries
【讨论】:
update-alternatives会知道他们
make 从源代码构建 OpenBlas,然后通过 make install PREFIX=your_installation_directory1 编译,然后使用 make USE_OPENMP=1 和 make install PREFIX=your_installation_directory2 编译,update-alternatives 可以在此文件夹中找到我的构建,或者我如何安装两个不同的构建通过 make install 在 ubuntu 的默认 lib 目录中使用相同的 lib?
您也可以在不更改系统范围设置的情况下执行此操作,例如将要使用的库添加到 LD_PRELOAD 或 LD_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
这种基于动态链接的方法适用于编译您的程序所针对的任何其他共享库。
【讨论】:
是的,你可以。您只需要使用动态库链接。
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
在安装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
当然,您可以使用自己的软链接来构建库。
【讨论】:
ldconfig -p 给我libblas.so.3gf (libc6,x86-64) => /usr/lib/libblas.so.3gf 和libblas.so (libc6,x86-64) => /usr/lib/libblas.so 什么是libblas.so.3 你能详细说明一下吗?