OpenBLAS简介及在Windows7 VS2013上源码的编译过程
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;
}
执行结果如下:
GitHub:https://github.com/fengbingchun/Caffe_Test
OpenBLAS简介及在Windows7 VS2013上源码的编译过程的更多相关文章
- 鸿蒙内核源码分析(编译过程篇) | 简单案例窥视GCC编译全过程 | 百篇博客分析OpenHarmony源码| v57.01
百篇博客系列篇.本篇为: v57.xx 鸿蒙内核源码分析(编译过程篇) | 简单案例窥视编译全过程 | 51.c.h.o 编译构建相关篇为: v50.xx 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙 ...
- Hadoop源码的编译过程详细解读(各版本)
说在前面的话 重新试多几次.编译过程中会出现下载某个包的时间太久,这是由于连接网站的过程中会出现假死,按ctrl+c,重新运行编译命令. 如果出现缺少了某个文件的情况,则要先清理maven(使用命 ...
- Spark源码的编译过程详细解读(各版本)
说在前面的话 重新试多几次.编译过程中会出现下载某个包的时间太久,这是由于连接网站的过程中会出现假死,按ctrl+c,重新运行编译命令. 如果出现缺少了某个文件的情况,则要先清理maven(使用命 ...
- Spark源码的编译过程详细解读(各版本)(博主推荐)
不多说,直接上干货! 说在前面的话 重新试多几次.编译过程中会出现下载某个包的时间太久,这是由于连接网站的过程中会出现假死,按ctrl+c,重新运行编译命令. 如果出现缺少了某个文件的情况,则要 ...
- 鸿蒙内核源码分析(编译脚本篇) | 如何防编译环境中的牛皮癣 | 百篇博客分析OpenHarmony源码 | v58.01
百篇博客系列篇.本篇为: v58.xx 鸿蒙内核源码分析(环境脚本篇) | 编译鸿蒙原来如此简单 | 51.c.h.o 本篇用两个脚本完成鸿蒙(L1)的编译环境安装/源码下载/编译过程,让编译,调试鸿 ...
- 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙看这篇或许真的够了 | 百篇博客分析OpenHarmony源码 | v50.06
百篇博客系列篇.本篇为: v50.xx 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙防掉坑指南 | 51.c.h.o 编译构建相关篇为: v50.xx 鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙防掉 ...
- 使用 IntelliJ IDEA 导入 Spark 最新源码及编译 Spark 源代码
前言 其实啊,无论你是初学者还是具备了有一定spark编程经验,都需要对spark源码足够重视起来. 本人,肺腑之己见,想要成为大数据的大牛和顶尖专家,多结合源码和操练编程. 准备工作 1.sca ...
- MySQL源码包编译安装
+++++++++++++++++++++++++++++++++++++++++++标题:MySQL数据库实力部署时间:2019年3月9日内容:MySQL源码包进行编译,然后部署MySQL单实例重点 ...
- 使用 IntelliJ IDEA 导入 Spark 最新源码及编译 Spark 源代码(博主强烈推荐)
前言 其实啊,无论你是初学者还是具备了有一定spark编程经验,都需要对spark源码足够重视起来. 本人,肺腑之己见,想要成为大数据的大牛和顶尖专家,多结合源码和操练编程. 准备工作 1.sca ...
随机推荐
- IOS 多文件上传 Java web端(后台) 使用List<MultipartFile> 接收出现的问题
先上正确的示例: 主要是设置我们的request的content-type为multipart/form-data NSDictionary *param = @{@"assignee&qu ...
- 手动将经典 VM 从 VHD 迁移到新的 ARM 托管磁盘 VM
本部分有助于将现有 Azure VM 从经典部署模型迁移到资源管理器部署模型中的托管磁盘. 计划迁移到托管磁盘 本部分可帮助你针对 VM 和磁盘类型做出最佳决策. 位置 选取 Azure 托管磁盘可用 ...
- nginx 编译安装时的编译参数说明(不建议看)
https://www.cnblogs.com/wazy/p/8108824.html ./configure --user=www \ #worker进程运行用户 --group=www \ #wo ...
- January 18th, 2018 Week 03rd Thursday
To strive, to seek, to find, and not to yield. 去奋斗,去寻觅,去探索,但绝不屈服. Strive for our dreams, seek the ve ...
- Deepin系统手动安装oracle jdk8详细教程
Deepin系统手动安装oracle jdk8详细教程 oracle官网下载jdk压缩包,使用 sudo tar -zxf jdk***解压文件,我放在在了home/diy/java/jdk路径下. ...
- webpack打包去掉console.log打印与debugger调试
如图,找到build/webpack.prod.conf.js 在 UglifyJsPlugin 插件下添加下列代码 drop_debugger: true, drop_console: true
- 【洛谷】【数论】P1876 开灯
[题目描述:] 首先所有的灯都是关的(注意是关!),编号为1的人走过来,把是一的倍数的灯全部打开,编号为二的的把是二的倍数的灯全部关上,编号为3的人又把是三的倍数的灯开的关上,关的开起来--直到第N个 ...
- CNAME记录和A记录
主机名:host.abcd.com 别名:一台主机可以提供多种服务,比如http服务和mail服务. 访问http服务就可以使用域名:www.abcd.com 访问mail服务就可以使用域名:mail ...
- Excel中mod函数的使用方法
1.mod函数的含义 1 1.mod函数是一个用来求余数函数,返回两数相除的余数.mod函数在Excel中一般不单独使用,经常和其他函数组合起来使用. END 2.mod函数的语法格式 1 2.mod ...
- Ros使用Arduino 2 使用rosserial创建一个publisher
1 启动arduino 将arduino开发板连接到电脑的usb口,在arduino IDE中进行设置. 选择Tools->Board,选择你所使用的arduino开发板的类型,所使用的ardu ...