BLAS 函数语法

此部分包含有关 sgemvdgemv 函数以及 sgemmdgemm 函数的原型的信息。

sgemvdgemv 函数的原型如下所示:
void sgemv(const char *trans, int *m, int *n, float *alpha,
					void *a, int *lda, void *x, int *incx, 
					float *beta, void *y, int *incy);
void dgemv(const char *trans, int *m, int *n, double *alpha,
					void *a, int *lda, void *x, int *incx,
				  double *beta, void *y, int *incy);
参数如下所示:
事务
是单个字符,指示输入矩阵 a的格式,其中:
  • 'N''n' 指示将在计算中使用 a
  • 'T''t' 指示将在计算中使用 a 的转置
m
表示:
  • 输入矩阵 a 中的行数
  • 向量 y的长度 (如果 'N''n' 用于 trans 参数)
  • 向量 x的长度 (如果 'T''t' 用于 trans 参数)
行数必须大于或等于零,且小于矩阵 a 的前导维 (在 lda中指定)
n
表示:
  • 输入矩阵 a 中的列数
  • 向量 x的长度 (如果 'N''n' 用于 trans 参数)
  • 向量 y的长度 (如果 'T''t' 用于 trans 参数)
列数必须大于或等于零。
alpha
是矩阵 a 的缩放常量
a
float (对于 sgemv) 或 double (对于 dgemv) 值的输入矩阵
lda
是由 a指定的数组的前导维度。 前导维度必须大于零。 前导维度必须大于或等于 1 ,且大于或等于 m中指定的值。
x
float (对于 sgemv) 或 double (对于 dgemv) 值的输入向量。
incx
是向量 x的条带。 它可以具有任何值。
Beta
是向量 y 的标度常量
y
float (对于 sgemv) 或 double (对于 dgemv) 值的输出向量。
包括
是向量 y的 stride。 不能为零。
注: 向量 y 不得具有具有矩阵 a 或向量 x的公共元素; 否则,结果不可预测。
sgemmdgemm 函数的原型如下所示:
void sgemm(const char *transa, const char *transb,
   int *l, int *n, int *m, float *alpha,
   const void *a, int *lda, void *b, int *ldb,
   float *beta, void *c, int *ldc);
void dgemm(const char *transa, const char *transb,
   int *l, int *n, int *m, double *alpha, 
   const void *a, int *lda, void *b, int *ldb, 
   double *beta, void *c, int *ldc);
参数如下所示:
transa
是单个字符,指示输入矩阵 a的格式,其中:
  • 'N''n' 指示将在计算中使用 a
  • 'T''t' 指示将在计算中使用 a 的转置
事务
是指示输入矩阵 b格式的单个字符,其中:
  • 'N''n' 指示将在计算中使用 b
  • 'T''t' 指示将在计算中使用 b 的转置
L
表示输出矩阵 c中的行数。 行数必须大于或等于零,并且小于 c的前导维数。
n
表示输出矩阵 c中的列数。 列数必须大于或等于零。
m
表示:
  • 矩阵 a中的列数 (如果 'N''n' 用于 transa 参数)
  • 矩阵 a中的行数 (如果 'T''t' 用于 transa 参数)
和:
  • 矩阵 b中的行数 (如果 'N''n' 用于 transb 参数)
  • 矩阵 b中的列数 (如果 'T''t' 用于 transb 参数)
m 必须大于或等于零。
alpha
是矩阵 a 的缩放常量
a
float (对于 sgemm) 或 double (对于 dgemm) 值的输入矩阵 a
lda
是由 a指定的数组的前导维度。 前导维度必须大于零。 如果将 transa 指定为 'N''n',那么前导维度必须大于或等于 1。 如果将 transa 指定为 'T''t',那么前导维度必须大于或等于 m中指定的值。
b
float (对于 sgemm) 或 double (对于 dgemm) 值的输入矩阵 b
ldb
是由 b指定的数组的前导维度。 前导维度必须大于零。 如果 transb 指定为 'N''n',那么前导维度必须大于或等于 m中指定的值。 如果将 transa 指定为 'T''t',那么前导维度必须大于或等于 n中指定的值。
Beta
是矩阵 c 的缩放常量
c
float (对于 sgemm) 或 double (对于 dgemm) 值的输出矩阵 c
最不发达国家
是由 c指定的数组的前导维度。 前导维度必须大于零。 如果 transb 指定为 'N''n',那么前导维度必须大于或等于 0 且大于或等于 l中指定的值。
注: 矩阵 c 不得具有具有矩阵 ab的公共元素; 否则,结果不可预测。