OpenBLAS编译和安装简介

OpenBLAS是高性能多核BLAS库,是GotoBLAS2 1.13 BSD版本的衍生版。项目主页是 https://github.com/xianyi/OpenBLAS 。

此项目主页和文档以英文为主,为了方便国人使用,所以在此开源中国社区弥补一些中文的blog资料。同时在这里回答一些中文的问题。

此篇博文主要记录一下安装流程以及可能遇到的问题。

通常的编译安装流程如下:

  • make  (通常情况下,make会进行自动探测,够用了)
  • make PREFIX=/your/path install  (可选) 

其中,make过程会自动的探测当前机器和编译环境,设置合适的选项。需注意的是,OpenBLAS会下载netlib上的LAPACK源代码。也就是说你的机器必须联网,或者放入lapack的源代码包,或者不包括LAPACK即make NO_LAPACK=1。

如果自动探测不够用,可以考虑下面几个常用选项,具体请参考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


交叉编译,比如在x86上编译龙芯3A的64bit库

make BINARY=64 CC=mips64el-unknown-linux-gnu-gcc FC=mips64el-unknown-linux-gnu-gfortran HOSTCC=gcc TARGET=LOONGSON3A

你可能感兴趣的:(OpenBLAS)