OpenBLAS 是一个基于 GotoBLAS2 1.13 BSD 版本的优化 BLAS 库。
请阅读 OpenBLAS wiki 页面上的文档:http://github.com/xianyi/OpenBLAS/wiki。
我们为以下平台提供二进制包。
你可以从 sourceforge.net 上的文件托管服务 下载它们。
从项目主页下载:http://xianyi.github.com/OpenBLAS/
或者,从 git://github.com/xianyi/OpenBLAS.git 检出代码。
make 以自动检测 CPU。make TARGET=xxx 来设置目标 CPU,例如 make TARGET=NEHALEM。完整的目标列表在文件 TargetList.txt 中。请使用交叉工具链设置 CC 和 FC。然后,使用你的主机 C 编译器设置 HOSTCC。最后,显式设置 TARGET。
示例:
在 X86 机器上,为龙芯 3A CPU 编译此库。
make BINARY=64 CC=mips64el-unknown-linux-gnu-gcc FC=mips64el-unknown-linux-gnu-gfortran HOSTCC=gcc TARGET=LOONGSON3A
在 X86 机器上,使用龙芯编译器(基于 Open64)为龙芯 3A CPU 编译此库。
make CC=loongcc FC=loongf95 HOSTCC=gcc TARGET=LOONGSON3A CROSS=1 CROSS_SUFFIX=mips64el-st-linux-gnu- NO_LAPACKE=1 NO_SHARED=1 BINARY=32
make DEBUG=1
IBM MASS 库包含一组针对 POWER 架构优化的 C、C++ 和 Fortran 语言数学函数。启用 MASS 的 OpenBLAS 要求 POWER 上运行 64 位、小端序操作系统。可按以下方式安装该库:
在 Ubuntu 上:
wget -q http://public.dhe.ibm.com/software/server/POWER/Linux/xl-compiler/eval/ppc64le/ubuntu/public.gpg -O- | sudo apt-key add -
echo "deb http://public.dhe.ibm.com/software/server/POWER/Linux/xl-compiler/eval/ppc64le/ubuntu/ trusty main" | sudo tee /etc/apt/sources.list.d/ibm-xl-compiler-eval.list
sudo apt-get update
sudo apt-get install libxlmass-devel.8.1.5
在 RHEL/CentOS 上:
wget http://public.dhe.ibm.com/software/server/POWER/Linux/xl-compiler/eval/ppc64le/rhel7/repodata/repomd.xml.key
sudo rpm --import repomd.xml.key
wget http://public.dhe.ibm.com/software/server/POWER/Linux/xl-compiler/eval/ppc64le/rhel7/ibm-xl-compiler-eval.repo
sudo cp ibm-xl-compiler-eval.repo /etc/yum.repos.d/
sudo yum install libxlmass-devel.8.1.5
安装 MASS 库后,使用 USE_MASS=1 编译 openblas。
示例:
在 Power8 上编译并启用 MASS 支持:
make USE_MASS=1 TARGET=POWER8
示例:
make install PREFIX=你的安装目录
默认目录是 /opt/OpenBLAS。
请阅读 GotoBLAS_01Readme.txt。
链接 libopenblas.a 或使用 -lopenblas 链接共享库。
示例:
export OPENBLAS_NUM_THREADS=4
或
export GOTO_NUM_THREADS=4
或
export OMP_NUM_THREADS=4
优先级为:OPENBLAS_NUM_THREADS > GOTO_NUM_THREADS > OMP_NUM_THREADS。
如果你使用 USE_OPENMP=1 编译此库,则应设置 OMP_NUM_THREADS 环境变量。当启用 USE_OPENMP=1 时,OpenBLAS 会忽略 OPENBLAS_NUM_THREADS 和 GOTO_NUM_THREADS。
我们提供了以下函数在运行时控制线程数。
void goto_set_num_threads(int num_threads);
void openblas_set_num_threads(int num_threads);
如果你使用 USE_OPENMP=1 编译此库,也应使用上述函数。
请在 https://github.com/xianyi/OpenBLAS/issues 提交 issue。
请查看 Changelog.txt 以了解与 GotoBLAS2 1.13 BSD 版本的差异。
BIGNUMA=1 构建库,则实验性支持最多 1024 个 CPU/核心和 128 个 NUMA 节点。NO_AFFINITY=1 行来启用处理器亲和性。但这可能会导致与 R parallel 的冲突。make test 可能会因为 pthread_create 错误而失败,错误代码为 EAGAIN。但是,在 shell 中运行相同的测试用例时,它会正常工作。CONTRIBUTORS.md 中。请阅读 此 wiki 页面。