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

一、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-范数)
floatcblas_sasum(const int N, const float *X, const int incX); double cblas_dasum(const int N, const double *X, const int incX); floatcblas_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 的增量
返回值
【BLAS|BLAS API 中文文档(2)(待续)】返回向量的所有元素的实部和虚部的模的和。
  • 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
    实现实数向量的点积
floatcblas_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
floatcblas_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
    实现复数向量的点积
voidcblas_cdotc_sub(const int N, const void *X, const int incX, const void *Y, const int incY, void *dotc); voidcblas_zdotc_sub(const int N, const void *X, const int incX, const void *Y, const int incY, void *dotc);

  • cblas_?dotu_sub
    实现复数向量的点积
voidcblas_cdotu_sub(const int N, const void *X, const int incX, const void *Y, const int incY, void *dotu); voidcblas_zdotu_sub(const int N, const void *X, const int incX, const void *Y, const int incY, void *dotu);

  • cblas_?nrm2
    向量的长度
floatcblas_snrm2(const int N, const float *X, const int incX); double cblas_dnrm2(const int N, const double *X, const int incX); floatcblas_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 doubles);

  • 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);

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

    推荐阅读