2026a
# BLAS 接口
BLAS(基本线性代数子程序)提供了一系列基本线性代数运算函数的标准接口,包括矢量线性组合、矩阵乘以矢量、矩阵乘以矩阵等功能。BLAS 已被广泛的应用于工业界和科学计算,成为业界标准。为提高性能,各软硬件厂商针对其产品对 BLAS 接口实现进行了高度优化。替代本平台科学计算的 BLAS 算法库,应符合 BLAS 标准的 C 接口形式。 BLAS 针对不同的数据类型定义了相应的函数接口,并通过函数名前缀字面进行区分,其中 S 表示单精度浮点型、D 表示双精度浮点型、C 表示单精度复数、Z 表示双精度复数。
# Level-1 BLAS
Level-1 BLAS 提供了 15 种函数接口族。
| 函数族 | 简介 |
|---|---|
| ?rotg | 生成 Givens 变换矩阵 具体分为以下两个函数: cblas_srotg:生成单精度浮点型 Givens 变换矩阵 cblas_drotg:生成双精度浮点型 Givens 变换矩阵 |
| ?rotmg | 生成改进 Givens 变换矩阵 具体分为以下两个函数: cblas_srotmg:生成单精度浮点型改进 Givens 变换矩阵 cblas_drotmg:生成双精度浮点型改进 Givens 变换矩阵 |
| ?rot | 执行 Givens 变换 的正弦。 具体分为以下四个函数: cblas_srot:单精度浮点型 Givens 变换 cblas_drot:双精度浮点型 Givens 变换 cblas_crot:单精度复数型 Givens 变换 cblas_zrot:双精度复数型 Givens 变换 |
| ?rotm | 执行改进 Givens 变换 具体分为以下两个函数: cblas_srotm:单精度浮点型改进 Givens 变换 cblas_drotm:双精度浮点型改进 Givens 变换 |
| ?swap | 交换两个向量中的元素。 具体分为以下四个函数: cblas_sswap:单精度浮点型向量交换 cblas_dswap:双精度浮点型向量交换 cblas_cswap:单精度复数型向量交换 cblas_zswap:双精度复数型向量交换 |
| ?scal | 系数与向量乘积 元素的向量。 具体分为以下六个函数: cblas_sscal:单精度浮点型系数与向量乘积 cblas_dscal:双精度浮点型系数与向量乘积 cblas_cscal:单精度复数型系数与向量乘积 cblas_zscal:双精度复数型系数与向量乘积 cblas_csscal:单精度浮点型系数与单精度复数型向量乘积 cblas_zdscal:双精度浮点型系数与双精度复数型向量乘积 |
| ?copy | 向量复制 具体分为以下四个函数: cblas_scopy:单精度浮点型向量复制 cblas_dcopy:双精度浮点型向量复制 cblas_ccopy:单精度复数型向量复制 cblas_zcopy:双精度复数型向量复制 |
| ?axpy | 向量缩放后的乘积与另一向量的加和 具体分为以下四个函数: cblas_saxpy:单精度浮点型向量缩放后的乘积加和 cblas_daxpy:双精度浮点型向量缩放后的乘积加和 cblas_caxpy:单精度复数型向量缩放后的乘积加和 cblas_zaxpy:双精度复数型向量缩放后的乘积加和 |
| ?dot | 向量点积 具体分为以下两个函数: cblas_sdot:单精度浮点型向量点积 cblas_ddot:双精度浮点型向量点积 |
| ?dotc | 共轭向量与另一向量的点积 具体分为以下两个函数: cblas_cdotc: 单精度复数型向量点积 cblas_zdotc:双精度复数型向量点积 |
| ?dotu | 复数向量的点积。 cblas_cdotu:单精度复数型向量点积 cblas_zdotu:双精度复数型向量点积 |
| ?sdot | 向量点积 (输入向量为单精度, 以双精度计算) 具体分为以下两个函数: cblas_sdsdot:输出单精度复数型向量点积 cblas_dsdot:输出双精度复数型向量点积 |
| ?nrm2 | 向量 2 范数 具体分为以下四个函数: cblas_snrm2:单精度浮点型向量 2 范数 cblas_dnrm2:双精度浮点型向量 2 范数 cblas_scnrm2:单精度复数型向量 2 范数 cblas_dznrm2:双精度复数型向量 2 范数 |
| ?asum | 向量 1 范数 具体分为以下四个函数: cblas_sasum:单精度浮点型向量 1 范数 cblas_dasum:双精度浮点型向量 1 范数 cblas_scasum:单精度复数型向量 1 范数 cblas_dzasum:双精度复数型向量 1 范数 |
| i?amax | 实数向量返回最大绝对值的索引值, 复数向量返回实部绝对值和虚部绝对值之和的最大值索引值。 具体分为以下四个函数: cblas_isamax:单精度浮点型 cblas_idamax:双精度浮点型 cblas_icamax:单精度复数型 cblas_izamax:双精度复数型 |
# Level-2 BLAS
Level-2 BLAS 提供了 16 种函数接口。
| 函数族 | 简介 |
|---|---|
| ?gemv | A 为常规矩阵; 具体分为以下四个函数: cblas_sgemv: 单精度浮点型 cblas_dgemv: 双精度浮点型 cblas_cgemv: 单精度复数型 cblas_zgemv: 双精度复数型 |
| ?gbmv | A 为带状矩阵; 具体分为以下四个函数: cblas_sgbmv: 单精度浮点型 cblas_dgbmv: 双精度浮点型 cblas_cgbmv: 单精度复数型 cblas_zgbmv: 双精度复数型 |
| ?symv | A 为对称矩阵; 具体分为以下两个函数: cblas_ssymv: 单精度浮点型 cblas_dsymv: 双精度浮点型 |
| ?sbmv | A 为带状对称矩阵; 具体分为以下两个函数: cblas_ssbmv: 单精度浮点型 cblas_dsbmv: 双精度浮点型 |
| ?spmv | A 为 packed 对称矩阵; 具体分为以下两个函数: cblas_sspmv: 单精度浮点型 cblas_dspmv: 双精度浮点型 |
| ?trmv | A 为三角矩阵; 具体分为以下四个函数: cblas_strmv: 单精度浮点型 cblas_dtrmv: 双精度浮点型 cblas_ctrmv: 单精度复数型 cblas_ztrmv: 双精度复数型 |
| ?tbmv | A 为带状三角矩阵; 具体分为以下四个函数: cblas_stbmv: 单精度浮点型 cblas_dtbmv: 双精度浮点型 cblas_ctbmv: 单精度复数型 cblas_ztbmv: 双精度复数型 |
| ?tpmv | A 为 packed 三角矩阵; 具体分为以下四个函数: cblas_stpmv: 单精度浮点型 cblas_dtpmv: 双精度浮点型 cblas_ctpmv: 单精度复数型 cblas_ztpmv: 双精度复数型 |
| ?trsv | A 为三角矩阵; 具体分为以下四个函数: cblas_strsv: 单精度浮点型 cblas_dtrsv: 双精度浮点型 cblas_ctrsv: 单精度复数型 cblas_ztrsv: 双精度复数型 |
| ?tbsv | A 为带状三角矩阵; 具体分为以下四个函数: cblas_stbsv: 单精度浮点型 cblas_dtbsv: 双精度浮点型 cblas_ctbsv: 单精度复数型 cblas_ztbsv: 双精度复数型 |
| ?tpsv | A 为 packed 三角矩阵; 具体分为以下四个函数: cblas_stpsv: 单精度浮点型 cblas_dtpsv: 双精度浮点型 cblas_ctpsv: 单精度复数型 cblas_ztpsv: 双精度复数型 |
| ?ger | A 为常规矩阵; 具体分为以下两个函数: cblas_sger: 单精度浮点型 cblas_dger: 双精度浮点型 |
| ?syr | A 为对称矩阵; 具体分为以下两个函数: cblas_ssyr: 单精度浮点型 cblas_dsyr: 双精度浮点型 |
| ?spr | A 为 packed 对称矩阵; 具体分为以下两个函数: cblas_sspr: 单精度浮点型 cblas_dspr: 双精度浮点型 |
| ?syr2 | A 为对称矩阵; 具体分为以下两个函数: cblas_ssyr2: 单精度浮点型 cblas_dsyr2: 双精度浮点型 |
| ?spr2 | A 为 packed 对称矩阵; 具体分为以下两个函数: cblas_sspr2: 单精度浮点型 cblas_dspr2: 双精度浮点型 |
| ?hpr | A 为三角展开埃尔米特矩阵; 具体分为以下两个函数: cblas_chpr: 单精度复数型 cblas_zhpr: 双精度复数型 |
| ?her | A 为 具体分为以下两个函数: cblas_cher: 单精度复数型 cblas_zher: 双精度复数型 |
| ?hpr2 | A 为三角展开埃尔米特矩阵; 具体分为以下两个函数: cblas_chpr2: 单精度复数型 cblas_zhpr2: 双精度复数型 |
| ?her2 | A 为 具体分为以下两个函数: cblas_cher2: 单精度复数型 cblas_zher2: 双精度复数型 |
| ?hpmv | A 是三角展开的埃尔米特矩阵; 具体分为以下两个函数: cblas_chpmv: 单精度复数型 cblas_zhpmv: 双精度复数型 |
| ?hemv | 具体分为以下两个函数: cblas_chemv: 单精度复数型 cblas_zhemv: 双精度复数型 |
| ?hbmv | 具体分为以下两个函数: cblas_chbmv: 单精度复数型 cblas_zhbmv: 双精度复数型 |
| ?gerc | A 为常规矩阵; 具体分为以下两个函数: cblas_cgerc: 单精度复数型 cblas_zgerc: 双精度复数型 |
| ?geru | A 为常规矩阵; 具体分为以下两个函数: cblas_cgeru: 单精度复数型 cblas_zgeru: 双精度复数型 |
# Level-3 BLAS
Level-3 BLAS 提供了 9 种函数接口。
| 函数族 | 简介 |
|---|---|
| ?gemm | and op A/B/C 为常规矩阵; 具体分为以下四个函数: cblas_sgemm: 单精度浮点型 cblas_dgemm: 双精度浮点型 cblas_cgemm: 单精度复数型 cblas_zgemm: 双精度复数型 |
| ?hemm | or A 为埃尔米特矩阵, B/C 为常规矩阵; 具体分为以下两个函数: cblas_chemm: 单精度复数型 cblas_zhemm: 双精度复数型 |
| ?symm | or A 为对称矩阵, B/C 为常规矩阵; 具体分为以下四个函数: cblas_ssymm: 单精度浮点型 cblas_dsymm: 双精度浮点型 cblas_csymm: 单精度复数型 cblas_zsymm: 双精度复数型 |
| ?syrk | or A 为对称矩阵, C 为常规矩阵; 具体分为以下四个函数: cblas_ssyrk: 单精度浮点型 cblas_dsyrk: 双精度浮点型 cblas_csyrk: 单精度复数型 cblas_zsyrk: 双精度复数型 |
| ?syr2k | or 具体分为以下四个函数: cblas_ssyr2k: 单精度浮点型 cblas_dsyr2k: 双精度浮点型 cblas_csyr2k: 单精度复数型 cblas_zsyr2k: 双精度复数型 |
| ?trmm | or and A 为三角矩阵, B 为常规矩阵; 具体分为以下四个函数: cblas_strmm: 单精度浮点型 cblas_dtrmm: 双精度浮点型 cblas_ctrmm: 单精度复数型 cblas_ztrmm: 双精度复数型 |
| ?trsm | or and A 为三角矩阵, B 为常规矩阵; 具体分为以下四个函数: cblas_strsm: 单精度浮点型 cblas_dtrsm: 双精度浮点型 cblas_ctrsm: 单精度复数型 cblas_ztrsm: 双精度复数型 |
| ?herk | or 一种情况矩阵 具体分为以下两个函数: cblas_cherk: 单精度复数型 cblas_zherk: 双精度复数型 |
| ?her2k | or 第一种情况矩阵 具体分为以下两个函数: cblas_cher2k: 单精度复数型 cblas_zher2k: 双精度复数型 |