美文网首页
BLAS API 中文文档(2)(待续)

BLAS API 中文文档(2)(待续)

作者: 埃佳 | 来源:发表于2019-01-04 20:36 被阅读21次

一、BLAS level 1 函数接口表


函数接口 数据类型 释义
cblas_?asum s,d,sc,dz 向量元素值模的总和
cblas_?axpy s,d,c,z 向量缩放后加上另一个向量
cblas_?copy s,d,c,z 实现向量的拷贝
cblas_?dot s,d 实现实数向量的点积
cblas_?sdot sd,d
cblas_?dotc_sub c,z 实现复数向量的点积
cblas_?dotu_sub c,z 实现复数向量的点积
cblas_?nrm2 s,d,cs,dz 向量的长度
cblas_?rot s,d,sc,dz 实现平面的转换
cblas_?rotg s,d,c,z 建立平面的转换
cblas_?rotm s,d 实现改良后平面的转换
cblas_?rotmg s,d 建立改良后平面的转换
cblas_?scal s,d,c,z,sc,dz 实现向量的缩放
cblas_?swap s,d,c,z 实现向量的交换
cblas_i?amax s,d,c,z

二、BLAS level 1 函数接口详细说明


  • cblas_?asum
    计算向量元素值模的总和(欧几里德 1-范数)
float  cblas_sasum(const int N, const float *X, const int incX);
double cblas_dasum(const int N, const double *X, const int incX);
float  cblas_scasum(const int N, const void *X, const int incX);
double cblas_dzasum(const int N, const void *X, const int incX);

输入参数

N ------- 向量 X 的元素个数
X ------- 用数组表示的向量
incX --- 指定索引向量 X 的增量

返回值

返回向量的所有元素的实部和虚部的模的和。

  • cblas_?axpy
    向量缩放后加上另一个向量
void cblas_saxpy(const int N, const float alpha, const float *X,
                 const int incX, float *Y, const int incY);
void cblas_daxpy(const int N, const double alpha, const double *X,
                 const int incX, double *Y, const int incY);
void cblas_caxpy(const int N, const void *alpha, const void *X,
                 const int incX, void *Y, const int incY);
void cblas_zaxpy(const int N, const void *alpha, const void *X,
                 const int incX, void *Y, const int incY);

输入参数

N -------- 向量 XY 的元素个数
alpha --- 缩放向量 X 的标量
X -------- 用数组表示待缩放的向量
incX ---- 指定索引向量 X 的增量
Y -------- 用数组表示的向量
incY ---- 指定索引向量 Y 的增量

输出参数

Y -------- 用数组表示待刷新的向量

  • cblas_?copy
    实现向量的拷贝
void cblas_scopy(const int N, const float *X, const int incX, 
                 float *Y, const int incY);
void cblas_dcopy(const int N, const double *X, const int incX, 
                 double *Y, const int incY);
void cblas_ccopy(const int N, const void *X, const int incX, 
                 void *Y, const int incY);
void cblas_zcopy(const int N, const void *X, const int incX, 
                 void *Y, const int incY);

输入参数

N -------- 向量 XY 的元素个数
X -------- 用数组表示被拷贝的向量
incX ---- 指定索引向量 X 的增量
Y -------- 用数组表示的向量
incY ---- 指定索引向量 Y 的增量

输出参数

Y -------- 用数组表示待刷新的向量

  • cblas_?dot
    实现实数向量的点积
float  cblas_sdot(const int N, const float  *X, const int incX,
                  const float  *Y, const int incY);
double cblas_ddot(const int N, const double *X, const int incX,
                  const double *Y, const int incY);

输入参数

N -------- 向量 XY 的元素个数
X -------- 用数组表示被拷贝的向量
incX ---- 指定索引向量 X 的增量
Y -------- 用数组表示的向量
incY ---- 指定索引向量 Y 的增量

返回值

点积后的结果

  • cblas_?sdot
float  cblas_sdsdot(const int N, const float alpha, const float *X,
                    const int incX, const float *Y, const int incY);
double cblas_dsdot(const int N, const float *X, const int incX, const float *Y,
                   const int incY);
  • cblas_?dotc_sub
    实现复数向量的点积
void   cblas_cdotc_sub(const int N, const void *X, const int incX,
                       const void *Y, const int incY, void *dotc);
void   cblas_zdotc_sub(const int N, const void *X, const int incX,
                       const void *Y, const int incY, void *dotc);
  • cblas_?dotu_sub
    实现复数向量的点积
void   cblas_cdotu_sub(const int N, const void *X, const int incX,
                       const void *Y, const int incY, void *dotu);
void   cblas_zdotu_sub(const int N, const void *X, const int incX,
                       const void *Y, const int incY, void *dotu);
  • cblas_?nrm2
    向量的长度
float  cblas_snrm2(const int N, const float *X, const int incX);
double cblas_dnrm2(const int N, const double *X, const int incX);
float  cblas_scnrm2(const int N, const void *X, const int incX);
double cblas_dznrm2(const int N, const void *X, const int incX);
  • cblas_?rot
    实现平面的转换
void cblas_srot(const int N, float *X, const int incX,
                float *Y, const int incY, const float c, const float s);
void cblas_drot(const int N, double *X, const int incX,
                double *Y, const int incY, const double c, const double  s);
  • cblas_?rotg
    建立平面的转换
void cblas_srotg(float *a, float *b, float *c, float *s);
void cblas_drotg(double *a, double *b, double *c, double *s);
  • cblas_?rotm
    实现改良后平面的转换
void cblas_srotm(const int N, float *X, const int incX,
                float *Y, const int incY, const float *P);
void cblas_drotm(const int N, double *X, const int incX,
                double *Y, const int incY, const double *P);
  • cblas_?rotmg
    建立改良后平面的转换
void cblas_srotmg(float *d1, float *d2, float *b1, const float b2, float *P);
void cblas_drotmg(double *d1, double *d2, double *b1, const double b2, double *P);
  • cblas_?scal
    实现向量的缩放
void cblas_sscal(const int N, const float alpha, float *X, const int incX);
void cblas_dscal(const int N, const double alpha, double *X, const int incX);
void cblas_cscal(const int N, const void *alpha, void *X, const int incX);
void cblas_zscal(const int N, const void *alpha, void *X, const int incX);
void cblas_csscal(const int N, const float alpha, void *X, const int incX);
void cblas_zdscal(const int N, const double alpha, void *X, const int incX);
  • cblas_?swap
    实现向量的交换
void cblas_sswap(const int N, float *X, const int incX, 
                 float *Y, const int incY);
void cblas_dswap(const int N, double *X, const int incX, 
                 double *Y, const int incY);
void cblas_cswap(const int N, void *X, const int incX, 
                 void *Y, const int incY);
void cblas_zswap(const int N, void *X, const int incX, 
                 void *Y, const int incY);
  • cblas_i?amax
CBLAS_INDEX cblas_isamax(const int N, const float  *X, const int incX);
CBLAS_INDEX cblas_idamax(const int N, const double *X, const int incX);
CBLAS_INDEX cblas_icamax(const int N, const void   *X, const int incX);
CBLAS_INDEX cblas_izamax(const int N, const void   *X, const int incX);

此文档尚未写完,我会持续更新

相关文章

网友评论

      本文标题:BLAS API 中文文档(2)(待续)

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