BLAS API 中文文档(1)

作者: 埃佳 | 来源:发表于2019-01-04 16:28 被阅读52次

一、BLAS API 的命名规则

BLAS的命名结构有如下规则
<character> <name> <mod> ( )

1.1 <character>

<character> 域用于指出数据类型:

s 单精度实数
c 单精度复数
d 双精度实数
z 双精度复数

有一些 API 也包含一些其他的数据类型表示,比如 sc 或者 dz 。例如,scasum 函数使用复数类型的输入数组,但返回一个实数值。

1.2 <name>

<name> 域,在 BLAS level 1 中包含操作的类型,例如,BLAS level 1 函数接口中 ?dot, ?rot, ?swap 分别用于计算向量点积、向量旋转和向量交换。但在 BLAS level 2BLAS level 3 中反映矩阵参数类型:

ge 普通矩阵
gb 普通带状矩阵

sy 对称矩阵
sp 对称矩阵(压缩存储)
sb 对称带状矩阵

he 哈密顿矩阵
hp 哈密顿矩阵(压缩存储)
hb 哈密顿带状矩阵

tr 三角矩阵
tp 三角矩阵(压缩存储)
tb 三角带状矩阵

1.3 <mod>

<mod> 域,提供一些其他的操作细节。
BLAS level 1 中有如下的 <mod> 域:

c 共轭向量
u 非共轭向量
g Givens旋转结构
m
mg

BLAS level 2 中有如下的 <mod> 域:

mv 矩阵和向量乘积
sv 用一个未知向量解线性方程组
r 矩阵的 1 秩更新
r2 矩阵的 2 秩更新

BLAS level 3 中有如下的 <mod> 域:

mm 矩阵和矩阵乘积
sm 求解含有多个未知向量的线性方程组
rk 矩阵的 K 秩更新
r2k 矩阵的 2K 秩更新

二、枚举类型

CBLAS接口中定义了如下枚举类型:

enum CBLAS_ORDER {
          CblasRowMajor=101,     /* row-major arrays */
          CblasColMajor=102};    /* column-major arrays */
enum CBLAS_TRANSPOSE {
          CblasNoTrans=111,     /* trans = 'N' */
          CblasTrans=112,       /* trans = 'T' */
          CblasConjTrans=113};  /* trans = 'C' */
enum CBLAS_UPLO {
          CblasUpper=121, /* uplo = 'U' */
          CblasLower=122};/* uplo = 'L' */
enum CBLAS_DIAG {
          CblasNonUnit=131, /* diag = 'N' */
          CblasUnit=132};   /* diag = 'U' */
enum CBLAS_SIDE {
          CblasLeft=141,  /* side = 'L' */
          CblasRight=142};/* side = 'R' */

三、矩阵存储方案

矩阵参数可以使用以下存储方案:

  • 完全存储
    通过一个二维的数组 a[][] 去存储一个矩阵 A ,如果通过列主存储,则 Aij 的存储位置为 a[ i + j * lda ] ; 如果通过行主存储,则 Aij 的存储位置为 a[ j + i * lda ]
  • 压缩存储
    压缩存储方案允许您更紧凑地存储 对称、哈密顿矩阵和三角形矩阵。对于列主存储,矩阵的上三角或下三角由一维数组中的列填充。对于行主存储,矩阵的上三角或下三角由一维数组中的行填充。
  • 带状存储
    将带状矩阵压缩存储在二维数组中。对于列主存储,矩阵的列存储在数组的相应列中,矩阵的对角线存储在数组的特定行中。对于行主存储,矩阵的行存储在数组的相应行中,矩阵的对角线存储在数组的特定列中。

相关文章

网友评论

    本文标题:BLAS API 中文文档(1)

    本文链接:https://www.haomeiwen.com/subject/ebtkrqtx.html