FindBLAS

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

此模組尋找已安裝的 Fortran 庫,該庫實現了 BLAS 線性代數介面

必須啟用 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 版本中新增。

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,專案必須啟用 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