OpenBLAS編譯和安裝簡介

OpenBLAS是高性能多核BLAS庫,是GotoBLAS2 1.13 BSD版本的衍生版。項目主頁是 https://github.com/xianyi/OpenBLAS 。 linux

此項目主頁和文檔以英文爲主,爲了方便國人使用,因此在此開源中國社區彌補一些中文的blog資料。同時在這裏回答一些中文的問題。 git

此篇博文主要記錄一下安裝流程以及可能遇到的問題。 github

一般的編譯安裝流程以下: 多線程

  • 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
相關文章
相關標籤/搜索