FindBLAS¶
尋找基礎線性代數子程式 (BLAS) 函式庫
此模組會尋找已安裝且實作 BLAS 線性代數介面的 Fortran 函式庫。
必須啟用至少一種 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 中新增。
具有 SVE 指令的 Fujitsu SSL2 序列和並行 blas/lapack
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