稀疏BLAS 1级例程(向量-向量操作)

稀疏BLAS 1级例程(向量-向量操作)

  1. cblas_?axpyi(将压缩稀疏向量的标量倍数添加到全存储向量)

    cblas_saxpyi (const MKL_INT nz, const float a, const float *x, const MKL_INT *indx, float *y);
    
    cblas_daxpyi (const MKL_INT nz, const double a, const double *x, const MKL_INT *indx, double *y);
    
    cblas_caxpyi (const MKL_INT nz, const void *a, const void *x, const MKL_INT *indx,  void *y);
    
    cblas_zaxpyi (const MKL_INT nz, const void *a, const void *x, const MKL_INT *indx, void *y);
    

    描述:

    cblas_?axpyi函数执行向量-向量操作,定义为 y := a * x + y,a是标量,x是压缩形式存储的稀疏向量,y是全存储形式存储的向量。

    单精度实数为cblas_saxpyi,双精度实数cblas_daxpyi,单精度复数cblas_caxpyi, 双精度复数cblas_zaxpyi

    输入参数

    nz 整数。x和indx中的元素数量
    a 指定标量a
    x 数组,大小至少nz
    indx 整数。指定x元素的索引,数组,大小至少nz。
    y 数组,大小至少max(indx(i))。

    输出参数

    y: 包含更新后的向量y

  2. cblas_?doti(计算一个压缩稀疏实向量与一个全存储实向量的点积)

    float res = cblas_sdoti (const MKL_INT nz, const float *x, const MKL_INT *indx, const float *y);
    
    double res = cblas_ddoti (const MKL_INT nz, const double *x, const MKL_INT *indx, const double *y);
    

    描述:

    cblas_?doti函数返回定义的x和y的点积,定义为res = x(1) * y(indx(1)) + x(2) * y(indx(2)) +…+ x(nz) * y(indx(nz)),其中三元组(nz, x, indx)定义了以压缩形式存储的稀疏实向量,而y是以完整存储形式存储的实向量。这些函数只引用索引在数组indx中列出的y元素。indx中的值必须是不同的。

    单精度实数为cblas_sdoti,双精度实数cblas_ddoti

    输入参数

    nz 整数。x和indx中的元素数量。
    x 数组,大小至少nz
    indx 整数。指定x元素的索引,数组,大小至少nz。
    y 数组,大小至少max(indx(i))。

    输出参数

    res: 包含x和y的点积,如果nz是正的。否则,res包含0。

  3. cblas_?dotci(计算压缩稀疏复向量与全存储复向量的共轭点积)

    cblas_cdotci_sub (const MKL_INT nz, const void *x, const MKL_INT *indx, const void *y, void *dotui);
    
    cblas_zdotci_sub (const MKL_INT nz, const void *x, const MKL_INT *indx, const void *y, void *dotui);
    

    描述:

    cblas_?dotci函数返回定义的x和y的点积,定义为conjg(x(1)) * y(indx(1)) + … + conjg(x(nz)) * y(indx(nz)),其中三元组(nz、x、indx)定义了以压缩形式存储的稀疏复向量,而y是以完整存储形式存储的真实向量。这些函数只引用索引在数组indx中列出的y元素。indx中的值必须是不同的。

    单精度复数为cblas_cdotci_sub,双精度复数cblas_zdotci_sub

    输入参数

    nz 整数。x和indx中的元素数量。
    x 数组,大小至少nz
    indx 整数。指定x元素的索引,数组,大小至少nz。
    y 数组,大小至少max(indx(i))。
    dotui 浮点数,

    输出参数

    dotui: 包含x和y的共轭点积,如果nz是正的。否则,它包含0。

  4. cblas_?dotui(计算压缩稀疏复向量与一个全存储复向量的点积)

    cblas_cdotui_sub (const MKL_INT nz, const void *x, const MKL_INT *indx, const void *y, void *dotui);
    
    cblas_zdotui_sub (const MKL_INT nz, const void *x, const MKL_INT *indx, const void *y, void *dotui);
    

    描述:

    cblas_?dotci函数返回定义为res = x(1) * y(indx(1)) + x(2) * y(indx(2)) +…其中三元组(nz, x, indx)定义了以压缩形式存储的稀疏复向量,而y是以完整存储形式存储的实向量。这些函数只引用索引在数组indx中列出的y元素。indx中的值必须是不同的。

    单精度复数为cblas_cdotui_sub,双精度复数cblas_zdotui_sub

    输入参数

    nz 整数。x和indx中的元素数量。
    x 数组,大小至少nz
    indx 整数。指定x元素的索引,数组,大小至少nz。
    y 数组,大小至少max(indx(i))。
    dotui 浮点数,

    输出参数

    dotui: 包含x和y的共轭点积,如果nz是正的。否则,它包含0。

  5. cblas_?gthr(将全存储稀疏向量的元素集合成压缩形式)

    cblas_sgthr (const MKL_INT nz, const float *y, float *x, const MKL_INT *indx);
    
    cblas_dgthr (const MKL_INT nz, const double *y, double *x, const MKL_INT *indx);
    
    cblas_cgthr (const MKL_INT nz, const void *y, void *x, const MKL_INT *indx);
    
    cblas_zgthr (const MKL_INT nz, const void *y, void *x, const MKL_INT *indx);
    

    描述:

    cblas_?gthr函数将一个全存储稀疏向量y的指定元素收集为压缩形式(nz, x, indx)。函数只引用索引在数组indx: x(i) = y(indx(i))中的元素,因为i=1,2,…,nz。

    单精度实数为cblas_sgthr,双精度实数cblas_dgthr; 单精度复数为cblas_cgthr,双精度复数cblas_zgthr

    输入参数

    nz 整数。y中需要收集的元素数
    y 数组,大小至少nz
    x 数组,大小至少nz
    indx 整数。指定要收集的元素的索引。数组,大小至少nz。

    输出参数

    x: 数组,大小至少nz。包含转换为压缩形式的向量。

  6. cblas_?gthrz(将稀疏向量的元素压缩成压缩形式,用零替换它们)

    cblas_sgthrz (const MKL_INT nz, float *y, float *x, const MKL_INT *indx);
    
    cblas_dgthrz (const MKL_INT nz, double *y, double *x, const MKL_INT *indx);
    
    cblas_cgthrz (const MKL_INT nz, void *y, void *x, const MKL_INT *indx);
    
    cblas_zgthrz (const MKL_INT nz, void *y, void *x, const MKL_INT *indx);
    

    描述:

    cblas_?gthrz函数将一个全存储稀疏向量y的指定元素收集为压缩形式(nz, x, indx)。函数只引用索引在数组indx: x(i) = y(indx(i))中的元素,因为i=1,2,…,nz。

    单精度实数为cblas_sgthrz,双精度实数cblas_dgthrz; 单精度复数为cblas_cgthrz,双精度复数cblas_zgthrz

    输入参数

    nz 整数。y中需要收集的元素数
    y 数组,大小至少nz
    x 数组,大小至少nz
    indx 整数。指定要收集的元素的索引。数组,大小至少nz。

    输出参数

    x: 数组,大小至少nz。包含转换为压缩形式的向量。

    y: 更新后的向量

  7. cblas_?roti(将Givens旋转应用于稀疏向量,其中稀疏向量是压缩形式)

    cblas_sroti (const MKL_INT nz, float *x, const MKL_INT *indx, float *y, const float c, const float s);
    
    cblas_droti (const MKL_INT nz, double *x, const MKL_INT *indx, double *y, const double c, const double s);
    

    描述:

    cblas_?roti函数执对两个实向量的元素x(压缩形式nz, x, indx)和y(全存储形式)应用Givens旋转:x(i) = c * x(i) + s * y(indx(i)) ; y(indx(i)) = c * y(indx(i))- s * x(i) 函数只引用索引在数组indx中列出的y元素。indx中的值必须是不同的。

    单精度实数为cblas_sroti,双精度实cblas_droti

    输入参数

    nz 整数。x和indx中的元素数量
    x 数组,大小至少新西兰。
    indx 整数。指定x元素的索引。 数组,大小至少nz。
    y 数组,大小至少max(indx(i))
    c 一个标量
    s 一个标量

    输出参数

    x和y: 更新后的数组

  8. cblas_?sctr(将压缩的稀疏向量转换为完整的存储形式)

    cblas_ssctr (const MKL_INT nz, const float *x, const MKL_INT *indx, float *y);
    
    cblas_dsctr (const MKL_INT nz, const double *x, const MKL_INT *indx, double *y);
    
    cblas_csctr (const MKL_INT nz, const void *x, const MKL_INT *indx, void *y);
    
    cblas_zsctr (const MKL_INT nz, const void *x, const MKL_INT *indx, void *y);
    

    描述:

    cblas_?sctr函数将压缩稀疏向量(nz, x, indx)的元素分散到一个全存储向量y中。函数只修改索引在数组indx中列出的y元素:y(indx(i)) = x(i), for i=1,2,… ,nz.

    单精度实数为cblas_ssctr,双精度实数cblas_dsctr; 单精度复数为cblas_csctr,双精度复数cblas_zsctr

    输入参数

    nz 整数。x中要分散的元素的数量
    x 数组,大小至少nz 包含要转换为全存储形式的向量
    indx 整数。指定要分散的元素的索引。数组,大小至少nz
    y 数组,大小至少nz。 包含带有已更新元素的向量y。

    输出参数

    y: 数组,大小至少max(indx(i))。包含带有已更新元素的向量y。

你可能感兴趣的:(MKL数学库)