OpenBLAS简介及在Windows7 VS2013上源码的编译过程
OpenBLAS(Open Basic Linear Algebra Subprograms)是開源的基本線性代數(shù)子程序庫,是一個優(yōu)化的高性能多核BLAS庫,主要包括矩陣與矩陣、矩陣與向量、向量與向量等操作。它的License是BSD-3-Clause,可以商用,目前最新的發(fā)布版本是0.2.19。它的源碼放在了GitHub上,由張先軼老師等持續(xù)維護。
OpenBLAS是由中科院軟件所并行軟件與計算科學(xué)實驗室發(fā)起的基于GotoBLAS2 1.13 BSD版的開源BLAS庫高性能實現(xiàn)。
BLAS是一個應(yīng)用程序接口(API)標準,用以規(guī)范發(fā)布基礎(chǔ)線性代數(shù)操作的數(shù)值庫(如矢量或矩陣乘法)。該程序集最初發(fā)布于1979年,并用于建立更大的數(shù)值程序包(如LAPACK)。在高性能計算領(lǐng)域,BLAS被廣泛使用。
OpenBLAS支持的操作系統(tǒng)包括:Windows、Linux、Mac OS X、FreeBSD、Android.
OpenBLAS支持CPU類型包括:Intel、AMD、MIPS64、ARM/ARM64、IBM Z13.
在Windows7上安裝Perl操作步驟:
1.??????從https://www.perl.org/get.html下載Windows ActiveState Perl 5.22.3.2204 windows 64-bit;
2.??????點擊安裝,一直選擇默認設(shè)置即可;
3.??????打開命令提示符cmd,輸入: $ perl -v? 如果提示This is perl5,version 22等信息,說明安裝正確,如下圖:
OpenBLAS在VS2013上的編譯過程:(注:直接用VS2013編譯不如用MinGW編譯好,因為VS2013僅編譯C語言,沒有編譯AT&T匯編語言。在性能上用MinGW編譯的庫要快于直接用VS2013編譯的庫。要通過CMake和VS2013編譯OpenBLAS源碼,Windows操作系統(tǒng)上還需要安裝Perl)
1.??????從?https://github.com/xianyi/OpenBLAS/releases下載OpenBLAS 0.2.19源碼,并解壓縮;
2.??????打開CMake GUI:source code: D:/Download/OpenBLAS-0.2.19/OpenBLAS-0.2.19; build thebinaries: D:/Download/OpenBLAS-0.2.19/build;
3.??????點擊Configure;Specify the generator for this project: Visual Studio 12 2013 Win64,Finish;
4.??????修改CMAKE_INSTALL_PREFIX路徑為:D:/Download/OpenBLAS-0.2.19/install;默認BUILD_WITHOUT_LAPACK是被勾選的,即不會產(chǎn)生Lapack庫;
5.??????再次點擊Configure,點擊Generate,生成OpenBLAS.sln,如下圖;
6.??????打開OpenBLAS.sln:分別在Debug和Release下,重新生成解決方案,便會生成libopenblas.dll和libopenblas.lib(注:Debug和Release下,默認生成的庫的名字一樣,并且在同一個目錄下);
7. ? ? ?新建一個控制臺工程,驗證其openblas庫的正確性,測試代碼如下:
#include "funset.hpp"
#include <iostream>
#include <cblas.h>int test_openblas()
{int th_model = openblas_get_parallel();switch (th_model) {case OPENBLAS_SEQUENTIAL:printf("OpenBLAS is compiled sequentially.\n");break;case OPENBLAS_THREAD:printf("OpenBLAS is compiled using the normal threading model\n");break;case OPENBLAS_OPENMP:printf("OpenBLAS is compiled using OpenMP\n");break;}int n = 2;double* x = (double*)malloc(n*sizeof(double));double* upperTriangleResult = (double*)malloc(n*(n + 1)*sizeof(double) / 2);for (int j = 0; j<n*(n + 1) / 2; j++)upperTriangleResult[j] = 0;x[0] = 1; x[1] = 3;cblas_dspr(CblasRowMajor, CblasUpper, n, 1, x, 1, upperTriangleResult);double*& A = upperTriangleResult;std::cout << A[0] << "\t" << A[1] << std::endl << "*\t" << A[2] << std::endl;free(upperTriangleResult);free(x);return 0;
}
執(zhí)行結(jié)果如下:
Note: 也可以用命令提示符定位到openblas根目錄下,執(zhí)行:$ cmake -G "Visual Studio 12 Win64" 會直接生成OpenBLAS.sln工程
GitHub:https://github.com/fengbingchun/Caffe_Test
總結(jié)
以上是生活随笔為你收集整理的OpenBLAS简介及在Windows7 VS2013上源码的编译过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Caffe源码中caffe.proto文
- 下一篇: Caffe源码中math_functio