准备工作:
1.OpenBLAS下载:https://sourceforge.net/projects/openblas/files/v0.2.14/
百度网盘: https://pan.baidu.com/s/1GxZUoznlZ_R8fk8SXHMssA 提取码: ixcj
2.perl安装:https://strawberryperl.com/ 选择windows
,
百度网盘: https://pan.baidu.com/s/1qXwBB73dCcCHGiVI8-U70Q 提取码: sv4v
下载的文件名为:strawberry-perl-5.32.1.1-64bit.msi
3.CMake安装:https://cmake.org/download/
百度网盘: https://pan.baidu.com/s/1dk8BdPyNR6vHOW4t9kM3jA 提取码: c83s
4.vs2015下载:https://pan.baidu.com/s/1No5LoDLRie2xP8-0cNOwBQ 密码:4j2b
配置:
目标是获得以下几个文件:
cblas.h为首的一批头文件,包含函数的定义。
libopenblas.dll 动态链接库,包含函数的实现。
libopenblas.lib 这个是辅佐上面的dll工作的,大概就是说明一下有什么函数之类的。
1.OpenBLAS配置
解压下载的OpenBLAS-0.3.20_2.zip文件,假定解压到D:\OpenBLAS。
2.安装perl
找到下载的strawberry-perl-5.32.1.1-64bit.msi文件,双击安装,安装路径自己选择
,一直下一步直到成功。
win+r,运行cmd,输入perl -v得到下图即安装成功。
3.安装并配置CMake
(1) 在之前解压得到的D:\OpenBLAS目录下新建build文件夹。
(2) 双击下载的cmake-3.24.0-rc3-windows-x86_64.msi文件,安装路径自己选择
,一路下一步,直到出现下图:
(3) 打开CMake的图形界面(从安装的根目录里可以找到带gui的)
(4) CMake界面上方需要填写两个目录。
Where is the source code: 填写OpenBLAS源码所在的目录。根据这里的假设,应该填D:\OpenBLAS。
Where to build the binarys: 生成的解决方案放在哪里。根据这里的假设,应该填D:\OpenBLAS\build。
(5) 点CMake下方的configure,再点旁边的generate。这里应该会显示:Current Generator: Visual Studio 14 2015。
(6) 完成后,D:\OpenBLAS\build下应该能看到.sln了。点击Open Project即可通过VS2015打开它。
(7) 在右侧解决方案资源管理器中,右键最上面的项目,点生成。之后应该会显示全部生成成功。在新建的build文件夹中会生成一系列的文件。
4.vs2015配置
(1) 在VS2015中新建空项目test00,右击test00,选择属性
(2) 包含目录:项目-属性-VC++目录-包含目录,按这里的假设,添加D:\OpenBLAS\lapack-netlib\CBLAS\include。这个目录下有cblas.h。
(3) 库目录: 项目-属性-VC++目录-库目录, 按这里的假设,添加D:\OpenBLAS\build\lib。这个目录下有libopenblas.lib。
(4) 项目-属性-链接器-输入-附加依赖项,添加libopenblas.lib。
(5) 新建main.c,内容如下:
#include <cblas.h>
#include <stdio.h>
#include <stdlib.h>
void main() {
int i = 0;
double A[6] = { 1.0, 2.0, 1.0, -3.0, 4.0, -1.0 };
double B[6] = { 1.0, 2.0, 1.0, -3.0, 4.0, -1.0 };
double C[9] = { .5, .5, .5, .5, .5, .5, .5, .5, .5 };
int M = 3; // row of A and C
int N = 3; // col of B and C
int K = 2; // col of A and row of B
double alpha = 1.0;
double beta = 0.0;
cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, M, N, K, alpha, A, K, B, N, beta, C, N);
for (i = 0; i < 9; i++) {
printf("%lf ", C[i]);
}
printf("\n");
system("pause");
}
(6) 点击生成解决方案
报错:1>d:\openblas\lapack-netlib\cblas\include\cblas.h(27): fatal error C1083: 无法打开包括文件: “cblas_mangling.h”: No such file or directory
解决方法:
a.在OpenBLAS目录中搜索cblas_mangling_with_flags.h.in,备份,然后将其改名为cblas_mangling.h
(7) 把 D:\OpenBLAS\build\lib\DEBUG中的openblas.dll复制到main.c的同一目录下并重命名为libopenblas.dll。
(8) 生成解决方案,编译通过。
(9) 点击运行,控制台输出结果
参考文献:
提示:这里简述项目相关背景:
1.Win10 + VS2013 配置OpenBLAS
2.OpenBLAS简介及在Windows7 VS2013上源码的编译过程
3.Windows 10 VS2015 环境下安装使用BLAS线性代数库