OpenBlas0.3.14编译

可以zip文件下载,也可以git下载。

OpenBLAS各个版本下载:https://github.com/xianyi/OpenBLAS/releases

git下载:

git clone -b v0.3.14 https://github.com/xianyi/OpenBLAS.git

下面是win10下编译

对我帮助最大的两个博客是【msys2】Child process exited with status 127 和OpenBLAS windows 10 编译

因为之前使用过msys2编译过boost库,那是两年前的事情了,现在要编译OpenBLAS库,发现很多命令都不好用了,最终各种修补都没有解决,最终解决方案是安装最新版msys2.

然后编译OpenBLAS库。

windows开始菜单打开 MSYS2 MSYS命令行

通过命令

pacman -Ss gcc

查询完整的gcc包名

安装MinGW gcc编译器,输入命令

pacman -S mingw-w64-x86_64-gcc

安装fortran编译器,否则不编译LAPACK

pacman -S mingw-w64-x86_64-gcc-fortran

安装 perl

pacman -S --noconfirm perl

安装 MSYS2 的make

pacman -S make

然后,windows开始菜单搜索打开MSYS2 MinGW 64-bit控制面板

查看gcc版本

gcc --version

进入OpenBLAS文件夹输入make指令编译

 

make完成后,创建一个OpenBLAS文件夹,输入一个安装目录,将编译好的库放在这里面,例如输入指令
make install PREFIX="your-path"
会在这个目录里面创建开发所需要的bin,include,lib文件夹和相应的文件,复制到其他软件要求的目录并添加要求的环境变量即可
 

 

参考:Windows使用mingw编译openblas

参考:Windows 10 VS2015 环境下安装使用BLAS线性代数库

参考:Windows下MSYS2中编译OpenBLAS过程记录

参考:OpenBLAS windows 10 编译

参考:【msys2】Child process exited with status 127

下面是Linux下编译

我是用的是Ubuntu16编译的,里面已经安装了gcc、gfortran、perl

使用如下命令查看版本号确定有没有安装

gcc --version
gfortran --version
perl --version

没有安装的话安装一下,安装过的直接进行下一步操作。

使用git下载慢的可以直接下载zip包,然后解压。

进入OpenBLAS文件夹。

编译

make

如果知道电脑几个核可以指定编译线程数,比如电脑8核

make -j8

如果不知道电脑几个核,使用下面的命令,自动使用最多的线程数编译

make -j$(nproc)

编译完成后安装,可以自己指定安装位置,比如:

sudo make PREFIX=/usr/local/OpenBLAS install

如果是给caffe使用,需要修改caffe配置文件如下几行:

# open for OpenBlas
BLAS := open
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
BLAS_INCLUDE := /usr/local/OpenBLAS/include
BLAS_LIB := /usr/local/OpenBLAS/lib

3. 添加环境变量

在 /etc/profile 末尾加上 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/OpenBLAS/lib/ 然后 sudo source /etc/profile 

注:直接安装在/usr/local 下应该就不需要添加环境变量

4. 编译Caffe

5. 可在环境变量中设置OpenBLAS所使用的CPU线程数

export OPENBLAS_NUM_THREADS=4

参考:Linux下软件安装:Openblas安装

经过测试发现:OpenBLAS0.3.14 比OpenBLAS0.2.14速度翻了一倍,之前需要100ms推理的,现在只需要不到50ms.

 

 

你可能感兴趣的:(caffe,C++)