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 or
A 为常规矩阵;
具体分为以下四个函数:
cblas_sgemv: 单精度浮点型
cblas_dgemv: 双精度浮点型
cblas_cgemv: 单精度复数型
cblas_zgemv: 双精度复数型
?gbmv or
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 or
A 为三角矩阵;
具体分为以下四个函数:
cblas_strmv: 单精度浮点型
cblas_dtrmv: 双精度浮点型
cblas_ctrmv: 单精度复数型
cblas_ztrmv: 双精度复数型
?tbmv or
A 为带状三角矩阵;
具体分为以下四个函数:
cblas_stbmv: 单精度浮点型
cblas_dtbmv: 双精度浮点型
cblas_ctbmv: 单精度复数型
cblas_ztbmv: 双精度复数型
?tpmv or
A 为 packed 三角矩阵;
具体分为以下四个函数:
cblas_stpmv: 单精度浮点型
cblas_dtpmv: 双精度浮点型
cblas_ctpmv: 单精度复数型
cblas_ztpmv: 双精度复数型
?trsv or
A 为三角矩阵;
具体分为以下四个函数:
cblas_strsv: 单精度浮点型
cblas_dtrsv: 双精度浮点型
cblas_ctrsv: 单精度复数型
cblas_ztrsv: 双精度复数型
?tbsv or
A 为带状三角矩阵;
具体分为以下四个函数:
cblas_stbsv: 单精度浮点型
cblas_dtbsv: 双精度浮点型
cblas_ctbsv: 单精度复数型
cblas_ztbsv: 双精度复数型
?tpsv or
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 or
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
为对称矩阵, A/B 为常规矩阵;
具体分为以下四个函数:
cblas_ssyr2k: 单精度浮点型
cblas_dsyr2k: 双精度浮点型
cblas_csyr2k: 单精度复数型
cblas_zsyr2k: 双精度复数型
?trmm
or
and or
A 为三角矩阵, B 为常规矩阵;
具体分为以下四个函数:
cblas_strmm: 单精度浮点型
cblas_dtrmm: 双精度浮点型
cblas_ctrmm: 单精度复数型
cblas_ztrmm: 双精度复数型
?trsm
or
and or
A 为三角矩阵, B 为常规矩阵;
具体分为以下四个函数:
cblas_strsm: 单精度浮点型
cblas_dtrsm: 双精度浮点型
cblas_ctrsm: 单精度复数型
cblas_ztrsm: 双精度复数型
?herk
or
为埃尔米特矩阵;
一种情况矩阵 , 第二种情况矩阵
具体分为以下两个函数:
cblas_cherk: 单精度复数型
cblas_zherk: 双精度复数型
?her2k
or
为埃尔米特矩阵;
第一种情况矩阵 , 第二种情况矩阵
具体分为以下两个函数:
cblas_cher2k: 单精度复数型
cblas_zher2k: 双精度复数型