FindBLAS

尋找基礎線性代數子程式 (BLAS) 函式庫

此模組會尋找已安裝且實作 BLAS 線性代數介面的 Fortran 函式庫。

必須啟用至少一種 CCXXFortran 語言。

輸入變數

可設定以下變數來影響此模組的行為

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 實作,專案必須啟用至少一種 CCXX 語言。在命令列中將 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