前言

对于矩阵运算,我们使用GPU会更加快速,因为GPU可以并行计算,在使用CUDA的时候,编写核函数会有点麻烦,于是,有一个cuBLAS库可以使用,上面包含了一些基本的矩阵运算函数。

根据文档,可以看到一些关于cuBLAS的函数,以下是根据文档第二章加上自己的理解所编写的一些函数的简介目录。

为了方面及时查看有哪些库可以使用,我就写下这篇博客,如果有错误,谢谢大家的指出!

Chapter 2 CUBLAS by example

2.1 示例的一般说明

所有子程序都有四个版本对应的四种数据类型

  • s, S: float
  • d, D: double
  • c, C: cuComplex
  • z, Z: cuDoubleComplex

2.2 CUBLAS level-1. 标量-向量的基本操作

2.2.1 cublasIsamax, cublasIsamin

此函数查找具有最大/最小幅度的数组元素的最小索引

2.2.3 cublasSasum

绝对值之和

2.2.5 cublasSaxpy

计算αx + y,向量x乘上标量α加上向量y

2.2.7 cublasScopy

x拷贝到y上,向量操作。

2.2.9 cublasSdot

点积: 计算向量 x 和 y 的点积
x ⋅ y = x 0 y 0 + . . . + x n − 1 y n − 1 x·y=x_0y_0+...+x_{n-1}y_{n-1} xy=x0y0+...+xn1yn1

2.2.11 cublasSnrm2

计算向量x的欧几里得范数:
∣ ∣ x ∣ ∣ = ∣ x 0 ∣ 2 + . . . + ∣ x n − 1 ∣ 2 ||x||=\sqrt{{|x_0|}^2+...+{|x_{n-1}|}^2} x=x02+...+xn12

2.2.13 cublasSrot

apply the Givens rotation

2.2.19 cublasSscal

缩放向量:
x = α x x=\alpha x x=αx

2.2.21 cublasSswap

交换两个向量:
x ← y ,     y ← x x\leftarrow y,\ \ \ y\leftarrow x xy,   yx

2.3 CUBLAS Level-2. 矩阵-向量操作

2.3.1 cublasSgbmv

This function performs the banded matrix-vector multiplication:
y = α   o p ( A ) x + β y y=\alpha \ op(A)x + \beta y y=α op(A)x+βy

2.3.3 cublasSgemv

矩阵-向量乘法:
y = α   o p ( A ) x + β y y=\alpha \ op(A)x + \beta y y=α op(A)x+βy

2.3.5 cublasSger

rank-1 update: 列向量和行向量相乘得到矩阵,然后加上一个矩阵:
A = α x y T + A     o r     A = α x y H + A A=\alpha xy^T + A\ \ \ or\ \ \ A=\alpha xy^H+A A=αxyT+A   or   A=αxyH+A
xy都是向量,α是标量

2.3.7 cublasSsbmv

对称带状矩阵-向量乘法
y = α   A x + B y y=\alpha \ Ax+By y=α Ax+By
A是对称带状矩阵,xy是向量,

2.3.9 cublasSspmv

对称压缩矩阵-向量乘法
y = α   A x + B y y=\alpha \ Ax+By y=α Ax+By

2.3.11 cublasSspr

对称压缩矩阵rank-1
A = α x x T + A A=\alpha xx^T+A A=αxxT+A

2.3.13 cublasSspr2

对称压缩矩阵rank-2
A = α ( x y T + y x T ) + A A=\alpha (xy^T+yx^T)+A A=α(xyT+yxT)+A

2.3.15 cublasSsymv

对称矩阵向量乘法
y = α A x + β y y=\alpha Ax+\beta y y=αAx+βy

2.3.17 cublasSsyr

对称矩阵rank-1
A = α x x T + A A=\alpha xx^T+A A=αxxT+A

2.3.19 cublasSsyr2

对称矩阵rank-2:
A = α ( x y T + y x T ) + A A=\alpha (xy^T+yx^T)+A A=α(xyT+yxT)+A

2.3.21 cublasStbmv

三角带状矩阵-向量乘法:
x = o p ( A ) x x=op(A)x x=op(A)x

2.3.23 cublasStbsv

求解三角带状线性系统:
o p ( A ) x = b op(A)x=b op(A)x=b
求出x

2.3.25 cublasStpmv

三角压缩矩阵-向量乘法:
x = o p ( A ) x x=op(A)x x=op(A)x

2.3.27 cublasStpsv

求解三角压缩矩阵:
o p ( A ) x = b op(A)x=b op(A)x=b
求出x

2.3.29 cublasStrmv

三角矩阵-向量乘法:
x = o p ( A ) x x=op(A)x x=op(A)x

2.3.31 cublasStrsv

求解三角矩阵-向量:
o p ( A ) x = b op(A)x=b op(A)x=b
x

2.3.33 cublasChemv

Hermitian 矩阵-向量乘法:
y = α A x + β y y=\alpha Ax+\beta y y=αAx+βy

2.3.35 cublasChbmv

Hermitian 带状矩阵-向量乘法:
y = α A x + β y y=\alpha Ax+\beta y y=αAx+βy

2.3.37 cublasChpmv

Hermitian 压缩矩阵-向量乘法:
y = α A x + β y y=\alpha Ax+\beta y y=αAx+βy

2.3.39 cublasCher

Hermitian 矩阵rank-1:
A = α x x H + A A=\alpha x x^H+A A=αxxH+A

2.3.41 cublasCher2

Hermitian 矩阵rank-2:
A = α x y H + α ˉ y x H + A A=\alpha xy^H+\bar{\alpha}yx^H+A A=αxyH+αˉyxH+A

2.3.43 cublasChpr

压缩Hermitian 矩阵rank-1:
A = α x x H + A A=\alpha x x^H+A A=αxxH+A

2.3.45 cublasChpr2

压缩Hermitian 矩阵rank-2:
A = α x y H + α ˉ y x H + A A=\alpha xy^H+\bar{\alpha}yx^H+A A=αxyH+αˉyxH+A

2.4 CUBLAS Level-3. 矩阵-矩阵操作

2.4.1 cublasSgemm

矩阵乘法:
C = α o p ( A ) o p ( B ) + β C C=\alpha op(A)op(B)+\beta C C=αop(A)op(B)+βC

2.4.3 cublasSsymm

对称矩阵-矩阵乘法:
C = α A B + β C   ① C=\alpha AB+\beta C\ ① C=αAB+βC 

C = α B A + β C   ② C=\alpha BA+\beta C\ ② C=αBA+βC 

两种情况都可以的

2.4.5 cublasSsyrk

对称rank-k:
C = α   o p ( A ) o p ( A ) T + β C C=\alpha \ op(A)op(A)^T+\beta C C=α op(A)op(A)T+βC

2.4.7 cublasSsyr2k

对称rank-2k:
C = α   ( o p ( A ) o p ( B ) T + o p ( B ) o p ( A ) T ) + β C C=\alpha \ (op(A)op(B)^T+op(B)op(A)^T)+ \beta C C=α (op(A)op(B)T+op(B)op(A)T)+βC

2.4.9 cublasStrmm

三角矩阵-矩阵乘法:
C = α   o p ( A )   B   ① C=\alpha \ op(A)\ B\ ① C=α op(A) B 

C = α   B   o p ( A )   ② C=\alpha \ B\ op(A)\ ② C=α B op(A) 

2.4.11 cublasStrsm

求解三角矩阵:
o p ( A )   X = α   B   ① op(A)\ X=\alpha\ B\ ① op(A) X=α B 

X   o p ( A ) = α   B   ② X\ op(A)=\alpha\ B\ ② X op(A)=α B 

2.4.13 cublasChemm

Hermitian 矩阵-矩阵乘法:
C = α A B + β C   ① C=\alpha AB+\beta C\ ① C=αAB+βC 

C = α B A + β C   ② C=\alpha BA+\beta C\ ② C=αBA+βC 

2.4.15 cublasCherk

Hermitian rank-k:
C = α   o p ( A ) o p ( A ) H + β   C C=\alpha \ op(A)op(A)^H+\beta \ C C=α op(A)op(A)H+β C

2.4.17 cublasCherk2k

Hermitian rank-2k:
C = α   o p ( A ) o p ( B ) H + α ˉ   o p ( B ) o p ( A ) H + β   C C=\alpha \ op(A)op(B)^H+\bar{\alpha}\ op(B)op(A)^H+\beta \ C C=α op(A)op(B)H+αˉ op(B)op(A)H+β C

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐