您的位置:首页 > 运维架构

Win7 64Bit + VS2012 + openBLAS0.2.18

2016-07-20 11:40 344 查看
为了方便神经网络模型的高效运行,需要独立实现一套基于forward框架,因此需要用到openBLAS矩阵计算库。

配置环境:Win7 64Bit + VS2012 + openBLAS0.2.18

安装MSYS2

官方推荐MinGW + MSYS,这个组合很难搞定,尤其是下载经常被墙。

(1)下载MSYS2

到这里去下载对应版本http://msys2.github.io/,

如果无法下载,那就百度吧,到处都是。

(2) 在安装目录下找到 msys2_shell.cmd 双击运行。

(3) 同步软件包数据库

pacman -Sy


如下图:



(4)升级核心包

pacman -S --needed filesystem msys2-runtime bash libreadline libiconv libarchive libgpgme libcurl pacman ncurses libintl




然后关闭shell,运行安装目录下的autorebase.bat。最后再次启动shell。

(5) 升级其他包

pacman -Su


(6) 安装gcc

首先查看可用的安装包:

pacman -Sl | grep gcc




依次执行

pacman -S mingw-w64-i686-gcc
pacman -S mingw-64-x86_64-gcc
pacman -S msys gcc


中间出现无法安装或者安装失败,请关闭并重启shell再试。

(7) 安装make

pacman -S make


编译openBLAS

(1)下载openBLAS

下载地址为:https://github.com/xianyi/OpenBLAS

(2)make 编译

在MSYS2的shell中,cd到openBLAS的解压目录,并make。这个要花挺长时间的。



make过程会自动的探测当前机器和编译环境,设置合适的选项。

如果自动探测不够用,可以考虑下面几个常用选项,具体请参考Makefile.rule文件:

编译32位或者64位, make BINARY=32 或者 make BINARY=64 (如果不设置,会自动探测)

设置目标CPU,比如目标CPU为sandybridge或者nehalem,make TARGET=SANDYBRIDGE 或者 make TARGET=NEHALEM (如果不设置,会自动探测)

在x86/x86_64架构上,程序库包含多个CPU的汇编优化代码,make DYNAMIC_ARCH=1

不包含CBLAS接口,make NO_CBLAS=1

不包含LAPACK, make NO_LAPACK=1

包含LAPACK,但是不包含LAPACKE接口,make NO_LAPACKE=1

编译单线程库, make USE_THREAD=0 (如果不设置为0,会自动探测是否多核处理器,默认使用pthread并行)

编译OpenMP多线程库,make USE_OPENMP=1

设置最大线程数量为n,make NUM_THREADS=n

禁用CPU亲和性,make NO_AFFINITY=1

(3) 整理输出结果

一般我们需要的就3个文件:

头文件: cblas.h
静态链接库:libopenblas.dll.a
动态链接库:libopenblas.dll


VS2012调用openBLAS

(1) 引用头文件cblas.h

(2)设置附加包含目录,即cblas所在路径

(3)添加附加依赖项libopenblas.dll.a,并设置附加依赖目录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: