OpenBLAS(Open Basic Linear Algebra Subprograms)是开源的基本线性代数子程序库,是一个优化的高性能多核BLAS库,主要包括矩阵与矩阵、矩阵与向量、向量与向量等操作。它的License是BSD-3-Clause,可以商用,目前最新的发布版本是0.2.19。它的源码放在了GitHub上,由张先轶老师等持续维护。

OpenBLAS是由中科院软件所并行软件与计算科学实验室发起的基于GotoBLAS2 1.13 BSD版的开源BLAS库高性能实现。

BLAS是一个应用程序接口(API)标准,用以规范发布基础线性代数操作的数值库(如矢量或矩阵乘法)。该程序集最初发布于1979年,并用于建立更大的数值程序包(如LAPACK)。在高性能计算领域,BLAS被广泛使用。

OpenBLAS支持的操作系统包括: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.      点击安装,一直选择默认设置即可;

3.      打开命令提示符cmd,输入: $ perl -v  如果提示This is perl5,version 22等信息,说明安装正确,如下图:

OpenBLAS在VS2013上的编译过程:(注:直接用VS2013编译不如用MinGW编译好,因为VS2013仅编译C语言,没有编译AT&T汇编语言。在性能上用MinGW编译的库要快于直接用VS2013编译的库。要通过CMake和VS2013编译OpenBLAS源码,Windows操作系统上还需要安装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是被勾选的,即不会产生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;
}

执行结果如下:

Note: 也可以用命令提示符定位到openblas根目录下,执行:$ cmake -G "Visual Studio 12 Win64" 会直接生成OpenBLAS.sln工程

GitHub:https://github.com/fengbingchun/Caffe_Test

OpenBLAS简介及在Windows7 VS2013上源码的编译过程相关推荐

  1. Intel TBB简介及在Windows7 VS2013上源码的编译过程

    Intel TBB(Intel Threading Building Blocks)是Intel线程构建块开源库,它的License是Apache 2.0. Intel TBB是一种用于并行编程的基于 ...

  2. 初步了解mac下C源码的编译过程

    初步了解mac下C源码的编译过程 参考: 请问Mac OS X (10.9.1)下创建和使用动态链接库的方法 cc.gcc.g++.CC的区别概括 - 今晚打酱油_ - 博客园 Linux 下 的 c ...

  3. v57.02 鸿蒙内核源码分析(编译过程) | 简单案例说透中间过程 | 百篇博客分析HarmonyOS源码

    子畏于匡,颜渊后.子曰:"吾以女为死矣."曰:"子在,回何敢死?" <论语>:先进篇 百篇博客系列篇.本篇为: v57.xx 鸿蒙内核源码分析(编译 ...

  4. Spark源码的编译过程详细解读(各版本)(博主推荐)

    本文转自大数据躺过的坑博客园博客,原文链接:xxxxx,如需转载请自行联系原作者说在前面的话 重新试多几次.编译过程中会出现下载某个包的时间太久,这是由于连接网站的过程中会出现假死,按ctrl+c,重 ...

  5. crosswalk源码 的编译过程

    crosswalk 官方:https://github.com/crosswalk-project 编译环境 Ubuntu 16.04 crosswalk 支持的Ubuntu版本 12.04 .14. ...

  6. v50.03 鸿蒙内核源码分析(编译环境) | 编译鸿蒙防掉坑指南 | 百篇博客分析HarmonyOS源码

    颜渊死.子曰:"噫!天丧予!天丧予!" <论语>:先进篇 百篇博客系列篇.本篇为: v50.xx 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙防掉坑指南 编译构建相关篇 ...

  7. bert模型简介、transformers中bert模型源码阅读、分类任务实战和难点总结

    bert模型简介.transformers中bert模型源码阅读.分类任务实战和难点总结:https://blog.csdn.net/HUSTHY/article/details/105882989 ...

  8. android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试

    一,学习android系统源码下载,编译的作用 1,可以自己 DIY 自己的rom系统,从系统层面,宏观的加深理解 android系统 2,编译自己的 userdebug(原生root权限) rom, ...

  9. CentOS6.5上源码安装MongoDB3.2.1

    CentOS6.5上源码安装MongoDB3.2.1 [日期:2016-01-27] 来源:Linux社区  作者:darren-lee [字体:大 中 小] 1.环境准备: 1 mkdir /hom ...

最新文章

  1. 访谈计算机操作管理协会(Afcom)首席执行官Jill Eckhaus:数据中心问题出现在何处?...
  2. 算法导论——动态规划:0-1背包问题(完全解)
  3. 人工智能火了 高端人才成了香饽饽
  4. C#使用Ado.net读取Excel表的代码
  5. 手把手教你WEB套打程序开发
  6. win10修改服务器地址,win10 修改服务器地址
  7. 全排列及相关扩展算法(三)——利用中介数求排列在字典序排位算法
  8. roboware实用功能
  9. mysql解压安装如何登录_如何安装windows解压版MySQL及开启报错
  10. 前端flv.js设置缓冲时间和大小_不可不知的 WEB 前端网站优化 —— 雅虎 34 条军规...
  11. Java学习作业(14.4.21)
  12. python语言是一个优秀的面向对象语言_python是面向对象的语言吗
  13. HDU_5688 (map)
  14. 论文笔记 -- ISSCC-2020: GANPU (Multi-DNN Processor for GANs with Speculative Dual-Sparsity Exploitation)
  15. 如何获得哔哩哔哩上下载的教学视频在电脑上看?(bilibili音频视频分离)
  16. ios 苹果支付(IAP)
  17. 前端中用手机拍照压缩,上传图片压缩
  18. java_opts 与catalina_opts区别_CATALINA_OPTS和 JAVA_OPTS区别
  19. 可换皮肤的Qt登录界面
  20. CSS-浏览器缩放使边框大小改变,导致布局改变的问题

热门文章

  1. 数字图像处理:(3)一阶微分算子在图像处理中的应用
  2. 数据结构和算法:(3)3.2线性表的链式存储结构
  3. 自定义类型数组的初始化
  4. svn目录结构 php,svn – php代码组织
  5. ubuntu安装OpenCV详细教程(建议收藏)
  6. HC-05与HC-06的AT指令的区别
  7. VSCode设置类似Webstorm那样可以用本地局域网IP地址访问自己开发的测试项目,vs code 前端如何以服务器模式打开?
  8. ROS Melodic安装、配置和使用turtlebot2(集成众多源代码直接下载)
  9. ubuntu常用翻译工具stardict
  10. 01 python爬虫