前言

最近需要在windows平台使用BLAS,出于速度要求,选了OpenBLAS(比原实现快了十倍不止呢,确实不错),在网上找了好多教程,搞了好久终于用VS编译出来了,果然Linux才是人类之光。
关于如何编译BLAS网上教程确实比较多,看了好几种,最后还是官网给的最简单How-to-use-OpenBLAS-in-Microsoft-Visual-Studio,但是也有一两个坑,这里就按照流程随便给官网教程翻译一下,然后顺便把官网没提到但存在的坑填一下吧。

正文

1.先下Miniconda3 64位,如果平时用不上conda的话记得下Mini版本的,小很多呢。

2.安装完Miniconda3后,最近添加应该会多两个程序Anaconda Prompt(Miniconda3)和Anaconda Powershell Prompt(Miniconda3) 这里的话可以选第一个,根据我的经验,这个显示的信息多一些。避免不必要的麻烦。

3.打开之后输入以下几个命令更新及安装需要的库之类的。不用换源啥的了,都差不多。然后clangdev会比较大,容易安装失败,记得检查一遍有没有安装失败的

conda update -n base conda
conda config --add channels conda-forge
conda install -y cmake flang clangdev perl libflang ninja

4.这里有一个坑,官网上的教程没有写,确认都安装成功之后把这个关掉,进入Miniconda3 安装路径\Library\bin找到clang-cl.exe这个程序,右键选择属性,然后选择兼容性,选中以管理员身份运行此程序并确认,如下图:
在这里插入图片描述
5.这个时候再以管理员身份打开Anaconda Prompt(Miniconda3),切记使用管理员身份

6.看看Anaconda 的环境变量有没有配对,好像打开就会显示(Powershell 版本不会显示)如下图所示:
在这里插入图片描述
就是看看LIB和CPATH的路径有没有问题,有问题的话通过set命令改一下吧,直接去环境变量改也是可以,注意如果没有把环境变量里面没有CONDA_PREFIX或者路径不对,自己把前面的换成Anaconda 安装目录。

set "LIB=%CONDA_PREFIX%\Library\lib;%LIB%"
set "CPATH=%CONDA_PREFIX%\Library\include;%CPATH%"

7.改完之后可以输入conda activate查看路径有没有配对。

8.在OpenBLAS源码目录内创建一个build目录,之后用Anaconda 进入build目录。

9.还需要激活MSVC环境,就是你要哪个版本的编译器使用就选那种。实际上就是运行一下vcvars.bat,目录的话2019是在{你的vs目录\VC\Auxiliary\Build}下,看你是想要编译哪种就选哪种咯,比如x64就是选vcvars64.bat。具体操作就是输入下面命令OK(看准自己的文件及路径)。

D:\CodeTools\VS2019\VC\Auxiliary\Build\vcvars64.bat

10.然后就是在conda 下使用命令行CMAKE了,官方配置如下,自己根据需要选配。

cmake .. -G "Ninja" -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER=clang-cl -DCMAKE_Fortran_COMPILER=flang -DBUILD_WITHOUT_LAPACK=no -DNOFORTRAN=0 -DDYNAMIC_ARCH=ON -DCMAKE_BUILD_TYPE=Release

11.最后就是编译了,命令如下:

cmake --build . --config Release

12.这个编译也有一个坑,它跑着跑着会自己crash但是问题不大,重复运行编译的命令就可以了,大概四五次吧。应该就差不多成功了(我也不知道为什么…)

13.编译完成就可以在build目录下的lib->Release文件夹下多出一个openblas.lib,ok就是它了。

Logo

更多推荐