FindBLAS¶
尋找基礎線性代數子程式 (BLAS) 庫
此模組尋找已安裝的 Fortran 庫,該庫實現了 BLAS 線性代數介面。
必須啟用 C
、CXX
或 Fortran
語言中的至少一種。
輸入變數¶
可以設定以下變數來影響此模組的行為
BLA_STATIC
如果
ON
使用靜態連結BLA_VENDOR
設定為 BLAS/LAPACK 供應商 之一,以僅從指定的供應商搜尋 BLAS。如果未設定,則會考慮所有供應商。
BLA_F95
如果
ON
嘗試尋找 BLAS95 介面BLA_PREFER_PKGCONFIG
在 3.11 版本中新增。
如果設定
pkg-config
,將首先使用它來搜尋 BLAS 庫,如果找到,則優先使用BLA_PKGCONFIG_BLAS
在 3.25 版本中新增。
如果設定,
pkg-config
方法將尋找此模組名稱,而不是僅僅blas
。BLA_SIZEOF_INTEGER
在 3.22 版本中新增。
指定 BLAS/LAPACK 庫整數大小
4
搜尋具有 32 位元整數介面的 BLAS/LAPACK。
8
搜尋具有 64 位元整數介面的 BLAS/LAPACK。
ANY
搜尋任何 BLAS/LAPACK。最有可能找到具有 32 位元整數介面的 BLAS/LAPACK。
匯入目標¶
此模組定義以下 IMPORTED
目標
BLAS::BLAS
在 3.18 版本中新增。
如果找到,則用於 BLAS 的庫。
結果變數¶
此模組定義以下變數
BLAS_FOUND
找到實作 BLAS 介面的庫
BLAS_LINKER_FLAGS
所需連結器旗標的未快取清單(不包括
-l
和-L
)。BLAS_LIBRARIES
要連結以使用 BLAS 的庫的未快取清單(使用完整路徑名稱)(如果編譯器隱式連結 BLAS,則可能為空)
BLAS95_LIBRARIES
要連結以使用 BLAS95 介面的庫的未快取清單(使用完整路徑名稱)
BLAS95_FOUND
找到實作 BLAS95 介面的庫
BLAS/LAPACK 供應商¶
Generic
通用參考實作
ACML
,ACML_MP
,ACML_GPU
AMD 核心數學庫
AOCL
,AOCL_mt
在 3.27 版本中新增。
AMD 最佳化 CPU 庫
Apple
,NAS
Apple BLAS (Accelerate) 和 Apple NAS (vecLib)
Arm
,Arm_mp
,Arm_ilp64
,Arm_ilp64_mp
在 3.18 版本中新增。
Arm 效能庫
ATLAS
自動調整線性代數軟體
CXML
,DXML
Compaq/Digital 擴充數學庫
EML
,EML_mt
在 3.20 版本中新增。
Elbrus 數學庫
FLAME
在 3.11 版本中新增。
BLIS 框架
FlexiBLAS
在 3.19 版本中新增。
Fujitsu_SSL2
,Fujitsu_SSL2BLAMP
,Fujitsu_SSL2SVE
,Fujitsu_SSL2BLAMPSVE
在 3.20 版本中新增。
Fujitsu SSL2 串列和並行 blas/lapack 與 SVE 指令
Goto
GotoBLAS
IBMESSL
, IBMESSL_SMP
IBM 工程與科學子常式庫
Intel
Intel MKL 32 位元和 64 位元過時版本
Intel10_32
Intel MKL v10 32 位元,執行緒程式碼
Intel10_64lp
Intel MKL v10+ 64 位元,執行緒程式碼,lp64 模型
Intel10_64lp_seq
Intel MKL v10+ 64 位元,循序程式碼,lp64 模型
Intel10_64ilp
在 3.13 版本中新增。
Intel MKL v10+ 64 位元,執行緒程式碼,ilp64 模型
Intel10_64ilp_seq
在 3.13 版本中新增。
Intel MKL v10+ 64 位元,循序程式碼,ilp64 模型
Intel10_64_dyn
在 3.17 版本中新增。
Intel MKL v10+ 64 位元,單一動態庫
libblastrampoline
在 3.30 版本中新增。
使用 PLT 跳板的 BLAS/LAPACK 解多工庫
NVHPC
在 3.21 版本中新增。
NVIDIA HPC SDK
OpenBLAS
在 3.6 版本中新增。
PhiPACK
可攜式高效能 ANSI C (PHiPAC)
SCSL
,SCSL_mp
科學計算軟體庫
SGIMATH
SGI 科學數學庫
SunPerf
Sun 效能庫
Intel MKL¶
若要使用 Intel MKL 實作的 BLAS,專案必須啟用 C
或 CXX
語言中的至少一種。將 BLA_VENDOR
設定為 Intel MKL 變體,可以透過命令列 -DBLA_VENDOR=Intel10_64lp
或在專案程式碼中設定
set(BLA_VENDOR Intel10_64lp)
find_package(BLAS)
為了使用 Intel MKL 建置專案,終端使用者必須先建立 Intel MKL 環境
- Intel oneAPI
取得完整的 Intel 環境腳本
. /opt/intel/oneapi/setvars.sh
或者,取得 MKL 組件環境腳本
. /opt/intel/oneapi/mkl/latest/env/vars.sh
- Intel Classic
取得完整的 Intel 環境腳本
. /opt/intel/bin/compilervars.sh intel64
或者,取得 MKL 組件環境腳本
. /opt/intel/mkl/bin/mklvars.sh intel64
上述環境腳本將 MKLROOT
環境變數設定為 MKL 安裝的頂層目錄。它們還將執行時期庫的位置新增到您平台的動態庫載入器環境變數(例如 LD_LIBRARY_PATH
)。這對於連結到 MKL 的程式執行是必要的。
注意
從 Intel oneAPI 2021.2 開始,僅載入 MKL 組件並不會使其所有相依性都可用。特別是,iomp5
庫必須單獨可用,或透過也載入編譯器組件環境來提供
. /opt/intel/oneapi/compiler/latest/env/vars.sh