其结构为:
1、 表示精度类型:
符号 | 描述 |
---|---|
s | 单精度实数 |
c | 单精度复数 |
d | 双精度实数 |
z | 双精度复数 |
2、 在BLAS 级别2中表示操作类型,在级别2和3中反映的是矩阵参数类型
?dot | 点乘 |
?rot | 向量旋转 |
?swap | 向量交换 |
符号 | 描述 |
ge | general matrix |
gb | general band matrix |
sy | symmetric matrix |
sp | symmetric matrix (packed storage) |
sb | symmetric band matrix |
he | Hermitian matrix |
hp | Hermitian matrix (packed storage) |
hb | Hermitian band matrix |
tr | triangular matrix |
tp | triangular matrix (packed storage) |
tb | triangular band matrix. |
3、字段(如果存在)提供操作的其他详细信息。
c | 共轭载体 |
u | 非共轭载体 |
g | Givens rotation construction |
m | modified Givens rotation |
mg | modified Givens rotation construction |
mv | 矩阵向量积 |
sv | 用单个未知矢量解线性方程组 |
r | rank-1 update of a matrix |
r2 | rank-2 update of a matrix |
mm | 矩阵矩阵乘积 |
sm | 用多个未知向量求解线性方程组 |
rk | rank- k update of a matrix |
r2k | rank-2 k update of a matrix |
函数形式 |
参数类型(?位置) |
描述 |
---|---|---|
cblas_?asum |
s,d,sc,dz |
向量幅度之和(函数) |
cblas_?axpy |
s,d,c,z |
标量向量乘积(例程) |
cblas_?copy |
s,d,c,z |
复制向量(例程) |
cblas_?dot |
d
|
点积(功能) |
cblas_?sdot |
d,d |
点精度为双精度(功能) |
cblas_?dotc |
c,z |
点积共轭(函数) |
cblas_?dotu |
c,z |
点积未共轭(功能) |
cblas_?nrm2 |
s,d,sc,dz |
向量2范数(欧几里得范数)(函数) |
cblas_?rot |
s,d,cs,zd |
点的平面旋转(例程) |
cblas_?rotg |
s,d,c,z |
生成点的旋转旋转(例程) |
cblas_?rotm |
d |
修改点的给定平面旋转(例程) |
cblas_?rotmg |
d |
生成点的修改的Givens平面旋转(例程) |
cblas_?scal |
s,d,c,z,cs,zd |
向量标量积(例程) |
cblas_?swap |
s,d,c,z |
向量-向量交换(例程) |
cblas_i?amax |
s,d,c,z |
向量的最大绝对值元素的索引(函数) |
cblas_i?amin |
s,d,c,z |
向量的最小绝对值元素的索引(函数) |
cblas_?cabs1 |
d |
辅助函数,计算复数个单精度或双精度的绝对值 |
float cblas_sasum ( const MKL_INT n , const float *x , const MKL_INT incx );
float cblas_scasum ( const MKL_INT n , const void *x , const MKL_INT incx );
double cblas_dasum ( const MKL_INT n , const double *x , const MKL_INT incx );
double cblas_dzasum ( const MKL_INT n , const void *x , const MKL_INT incx );
其中x是一个具有n个元素的向量
n | 指定向量 x 中的元素数量 |
x | 数组,大小至少为(1 +(n -1)* abs(incx)) |
incx | 指定索引向量x的增量。 |
void cblas_saxpy ( const MKL_INT n , const float a , const float *x , const MKL_INT incx , float *y , const MKL_INT incy );
void cblas_daxpy ( const MKL_INT n , const double a , const double *x , const MKL_INT incx , double *y , const MKL_INT incy );
void cblas_caxpy ( const MKL_INT n , const void *a , const void *x , const MKL_INT incx , void *y , const MKL_INT incy );
void cblas_zaxpy ( const MKL_INT n , const void *a , const void *x , const MKL_INT incx , void *y , const MKL_INT incy );
a是标量;
x和y是向量,每个向量具有等于n的元素数量。
n | 指定向量x和y中的元素数 |
a | 指定标量a |
x | 数组,大小至少为(1 +(n -1)* abs(incx)) |
incx | 指定x元素的增量。 |
y | 数组,大小至少为(1 +(n -1)* abs(incy)) |
incy | 指定y元素的增量 |
void cblas_scopy ( const MKL_INT n , const float *x , const MKL_INT incx , float *y , const MKL_INT incy );
void cblas_dcopy ( const MKL_INT n , const double *x , const MKL_INT incx , double *y , const MKL_INT incy );
void cblas_ccopy ( const MKL_INT n , const void *x , const MKL_INT incx , void *y , const MKL_INT incy );
void cblas_zcopy ( const MKL_INT n , const void *x , const MKL_INT incx , void *y , const MKL_INT incy );
n | 指定向量x和y中的元素数 |
x | 数组,大小至少为(1 +(n -1)* abs(incx)) |
y | 数组,大小至少为(1 +(n -1)* abs(incy)) |
incy | 指定y元素的增量 |
float cblas_sdot ( const MKL_INT n , const float *x , const MKL_INT incx , const float *y , const MKL_INT incy );
double cblas_ddot ( const MKL_INT n , const double *x , const MKL_INT incx , const double *y , const MKL_INT incy );
n | 指定向量x和y中的元素数 |
x | 数组,大小至少为(1+(n -1)* abs(incx)) |
incx | 指定x元素的增量 |
y | 数组,大小至少为(1+(n -1)* abs(incy)) |
incy | 指定y元素的增量 |
float cblas_sdsdot ( const MKL_INT n , const float sb , const float *sx , const MKL_INT incx , const float *sy , const MKL_INT incy );
double cblas_dsdot ( const MKL_INT n , const float *sx , const MKL_INT incx , const float *sy , const MKL_INT incy );
n | 指定输入向量sx和sy中的元素数 |
sb | 要添加到内部乘积的单精度标量(仅用于功能sdsdot) |
sx, sy | 数组,大小分别至少为(1+(n -1)* abs(incx))和(1+(n -1)* abs(incy))。 包含输入单精度向量。 |
incx | 指定sx元素的增量。 |
incy | 指定sy元素的增量。 |
void cblas_cdotc_sub ( const MKL_INT n , const void *x , const MKL_INT incx , const void *y , const MKL_INT incy , void *dotc );
void cblas_zdotc_sub ( const MKL_INT n , const void *x , const MKL_INT incx , const void *y , const MKL_INT incy , void *dotc );
n | 指定向量x和y中的元素数 |
x | 数组,大小至少为(1 +(n -1)* abs(incx)) |
inccx | 指定x元素的增量 |
y | 数组,大小至少为(1 +(n -1)* abs(incy)) |
incy | 指定y元素的增量 |
void cblas_cdotu_sub ( const MKL_INT n , const void *x , const MKL_INT incx , const void *y , const MKL_INT incy , void *dotu );
void cblas_zdotu_sub ( const MKL_INT n , const void *x , const MKL_INT incx , const void *y , const MKL_INT incy , void *dotu );
n | 指定向量x和y中的元素数 |
x | 数组,大小至少为(1 +(n -1)* abs(incx)) |
incx | 指定x元素的增量 |
y | 数组,大小至少为(1 +(n -1)* abs(incy)) |
incy | 指定y元素的增量 |
float cblas_snrm2 ( const MKL_INT n , const float *x , const MKL_INT incx );
double cblas_dnrm2 ( const MKL_INT n , const double *x , const MKL_INT incx );
float cblas_scnrm2 ( const MKL_INT n , const void *x , const MKL_INT incx );
double cblas_dznrm2 ( const MKL_INT n , const void *x , const MKL_INT incx );
n | 指定向量x中的元素数 |
x | 数组,大小至少为(1 +(n -1)* abs(incx)) |
incx | 指定x元素的增量 |
void cblas_srot ( const MKL_INT n , float *x , const MKL_INT incx , float *y , const MKL_INT incy , const float c , const float s );
void cblas_drot ( const MKL_INT n , double *x , const MKL_INT incx , double *y , const MKL_INT incy , const double c , const double s );
void cblas_csrot ( const MKL_INT n , void *x , const MKL_INT incx , void *y , const MKL_INT incy , const float c , const float s );
void cblas_zdrot ( const MKL_INT n , void *x , const MKL_INT incx , void *y , const MKL_INT incy , const double c , const double s );
给定两个复数向量x和y,将替换这些向量的每个向量元素,如下所示:
n | 指定向量x和y中的元素数 |
x | 数组,大小至少为(1 +(n -1)* abs(incx)) |
incx | 指定x元素的增量 |
y | 数组,大小至少为(1 +(n -1)* abs(incy)) |
incy | 指定y元素的增量 |
c | 标量 |
a | 标量 |
void cblas_srotg ( float *a , float *b , float *c , float *s );
void cblas_drotg ( double *a , double *b , double *c , double *s );
void cblas_crotg ( void *a , const void *b , float *c , void *s );
void cblas_zrotg ( void *a , const void *b , double *c , void *s );
a | 提供点p的x坐标 |
b | 提供点p的y坐标 |
a | 包含与Givens旋转关联的参数r |
b | 包含与Givens旋转关联的参数z |
c | 包含与Givens旋转关联的参数c |
s | 包含与Givens旋转关联的参数s |
void cblas_sscal ( const MKL_INT n , const float a , float *x , const MKL_INT incx );
void cblas_dscal ( const MKL_INT n , const double a , double *x , const MKL_INT incx );
void cblas_cscal ( const MKL_INT n , const void *a , void *x , const MKL_INT incx );
void cblas_zscal ( const MKL_INT n , const void *a , void *x , const MKL_INT incx );
void cblas_csscal ( const MKL_INT n , const float a , void *x , const MKL_INT incx );
void cblas_zdscal ( const MKL_INT n , const double a , void *x , const MKL_INT incx );
n | 指定向量x中的元素数 |
a | 指定标量a |
x | 数组,大小至少为(1 +(n -1)* abs(incx)) |
incx | 指定x元素的增量 |
void cblas_sswap ( const MKL_INT n , float *x , const MKL_INT incx , float *y , const MKL_INT incy );
void cblas_dswap ( const MKL_INT n , double *x , const MKL_INT incx , double *y , const MKL_INT incy );
void cblas_cswap ( const MKL_INT n , void *x , const MKL_INT incx , void *y , const MKL_INT incy );
void cblas_zswap ( const MKL_INT n , void *x , const MKL_INT incx , void *y , const MKL_INT incy );
n | 指定向量x和y中的元素数 |
x | 数组,大小至少为(1 +(n -1)* abs(incx)) |
incx | 指定x元素的增量 |
y | 数组,大小至少为(1 +(n -1)* abs(incy)) |
incy | 指定y元素的增量 |
x | 包含结果向量x,即输入向量y |
y | 包含结果向量y,即输入向量x |
CBLAS_INDEX cblas_isamin ( const MKL_INT n , const float *x , const MKL_INT incx );
CBLAS_INDEX cblas_idamin ( const MKL_INT n , const double *x , const MKL_INT incx );
CBLAS_INDEX cblas_icamin ( const MKL_INT n , const void *x , const MKL_INT incx );
CBLAS_INDEX cblas_izamin ( const MKL_INT n , const void *x , const MKL_INT incx );
n | 指定向量中的元素数 X |
x | 数组,大小至少为(1 +(n -1)* abs(incx)) |
incx | 指定x元素的增量 |
目录
一、BLAS例程的命名约定:
二、BLAS 1级例程概述
三、BLAS 1级例程个函数介绍
1、cblas_?asum
2、cblas_?axpy
3、cblas_?copy
4、cblas_? dot
5、cblas_? sdot
6、cblas_? dotc
7、cblas_? dotu
8、cblas_? nrm2
9、cblas_? rot
10、cblas_? rotg
11、cblas_? scal
12、cblas_? swap
15、cblas_? amax
15、cblas_? amin
16、cblas_? cabs1
同上。
float cblas_scabs1 ( const void *z );
double cblas_dcabs1 ( const void *z );