muBLAS API 参考
函数
函数 mublasIsamax
mublasStatus mublasIsamax(
mublasHandle_t handle,
mublas_int n,
const float * x,
mublas_int incx,
mublas_int * result
)
函数 mublasIdamax
mublasStatus mublasIdamax(
mublasHandle_t handle,
mublas_int n,
const double * x,
mublas_int incx,
mublas_int * result
)
函数 mublasIzamax
mublasStatus mublasIzamax(
mublasHandle_t handle,
mublas_int n,
const muDoubleComplex * x,
mublas_int incx,
mublas_int * result
)
BLAS 一级 API
参数:
- handle [mublasHandle_t] mublas库上下文队列的句柄。
- n [mublas_int] x中元素的数量。
- x 设备指针,存储向量x。
- incx [mublas_int] 指定y元素的增量。
- result 设备指针或主机指针,用于存储amax索引。如果n,
incx <= 0,则返回为0.0。
amax查找向量x中最大绝对值元素的第一个索引。向量
函数 mublasIcamax
mublasStatus mublasIcamax(
mublasHandle_t handle,
mublas_int n,
const muComplex * x,
mublas_int incx,
mublas_int * result
)
BLAS 一级 API
参数:
- handle [mublasHandle_t] mublas库上下文队列的句柄。
- n [mublas_int] 每个向量x_i中的元素数量
- x 设备数组,存储每个向量x_i的设备指针。
- incx [mublas_int] 指定每个x_i元素的增量。incx必须大于0。
- batch_count [mublas_int] 批次 中的实例数量,必须大于0。
- result 设备或主机数组的指针,用于存储batch_count大小的结果。如果n,
incx<=0,则返回为0。
amax_batched在批次中查找每个向量x_i中最大绝对值元素的第一个索引,对于i = 1, ..., batch_count。
函数 mublasIsamin
mublasStatus mublasIsamin(
mublasHandle_t handle,
mublas_int n,
const float * x,
mublas_int incx,
mublas_int * result
)
函数 mublasIdamin
mublasStatus mublasIdamin(
mublasHandle_t handle,
mublas_int n,
const double * x,
mublas_int incx,
mublas_int * result
)
函数 mublasIzamin
mublasStatus mublasIzamin(
mublasHandle_t handle,
mublas_int n,
const muDoubleComplex * x,
mublas_int incx,
mublas_int * result
)
BLAS 一级 API
参数:
- handle [mublasHandle_t] mublas库上下文队列的句柄。
- n [mublas_int] x中的元素数量。
- x 设备指针,存储向量x。
- incx [mublas_int] 指定y元素的增量。
- result 设备指针或主机指针,用于存储amin索引。如果n,
incx<=0,则返回为0.0。
amin查找向量x中最小绝对值元素的第一个索引。向量
函数 mublasIcamin
mublasStatus mublasIcamin(
mublasHandle_t handle,
mublas_int n,
const muComplex * x,
mublas_int incx,
mublas_int * result
)
BLAS 一级 API
参数:
- handle [mublasHandle_t] mublas库上下文队列的句柄。
- n [mublas_int] 每个向量x_i中的元素数量
- x 设备数组,存储每个向量x_i的设备指针。
- incx [mublas_int] 指定每个x_i元素的增量。incx必须大于0。
- batch_count [mublas_int] 批次中的实例数量,必须大于0。
- result 设备或主机指针数组,用于存储batch_count大小的结果。如果n,
incx<=0,则返回为0。
amin_batched在批次中查找每个向量x_i中最小绝对值元素的第一个索引,对于i = 1, ..., batch_count。
函数 mublasSasum
mublasStatus mublasSasum(
mublasHandle_t handle,
mublas_int n,
const float * x,
mublas_int incx,
float * result
)
函数 mublasDasum
mublasStatus mublasDasum(
mublasHandle_t handle,
mublas_int n,
const double * x,
mublas_int incx,
double * result
)
函数 mublasDzasum
mublasStatus mublasDzasum(
mublasHandle_t handle,
mublas_int n,
const muDoubleComplex * x,
mublas_int incx,
double * result
)
BLAS 一级 API
参数:
- handle [mublasHandle_t] mublas库上下文队列的句柄。
- n [mublas_int] x和y中的元素数量。
- x 设备指针,存储向量x。
- incx [mublas_int] 指定x元素的增量。incx必须大于0。
- result 设备指针或主机指针,用于存储asum乘积。如果
n <= 0,则返回为0.0。
asum计算实向量x元素的绝对值之和,或者如果x是复向量,则计算实部和虚部元素的绝对值之和
函数 mublasScasum
mublasStatus mublasScasum(
mublasHandle_t handle,
mublas_int n,
const muComplex * x,
mublas_int incx,
float * result
)
BLAS 一级 API
参数:
- handle [mublasHandle_t] mublas库上下文队列的句柄。
- n [mublas_int] x和y中的元素数量。
- x 设备指针,存储向量x。
- incx [mublas_int] 指定x元素的增量。incx必须大于0。
- result 设备指针或主机指针,用于存储asum乘积。如果
n <= 0,则返回为0.0。
asum计算实向量x元素的绝对值之和,或者如果x是复向量,则计算实部和虚部元素的绝对值之和
函数 mublasSaxpy
mublasStatus mublasSaxpy(
mublasHandle_t handle,
mublas_int n,
const float * alpha,
const float * x,
mublas_int incx,
float * y,
mublas_int incy
)
函数 mublasDaxpy
mublasStatus mublasDaxpy(
mublasHandle_t handle,
mublas_int n,
const double * alpha,
const double * x,
mublas_int incx,
double * y,
mublas_int incy
)
函数 mublasZaxpy
mublasStatus mublasZaxpy(
mublasHandle_t handle,
mublas_int n,
const muDoubleComplex * alpha,
const muDoubleComplex * x,
mublas_int incx,
muDoubleComplex * y,
mublas_int incy
)
BLAS 一级 API
参数:
- handle [mublasHandle_t] mublas库上下文队列的句柄。
- n [mublas_int] x和y中的元素数量。
- alpha 设备指针或主机指针,指定标量alpha。
- x 设备指针,存储向量x。
- incx [mublas_int] 指定x元素的增量。
- y 设备指针,存储向量y。
- incy [mublas_int] 指定y元素的增量。
axpy计算常数alpha乘以向量x,加上向量y
函数 mublasCaxpy
mublasStatus mublasCaxpy(
mublasHandle_t handle,
mublas_int n,
const muComplex * alpha,
const muComplex * x,
mublas_int incx,
muComplex * y,
mublas_int incy
)
BLAS 一级 API
参数:
- handle [mublasHandle_t] mublas库上下文队列的句柄。
- n [mublas_int] x和y中的元素数量。
- alpha 设备指针或主机指针,指定标量alpha。
- x 设备指针,存储向量x。
- incx [mublas_int] 指定x元素的增量。
- y 设备指针,存储向量y。
- incy [mublas_int] 指定y元素的增量。
axpy计算常数alpha乘以向量x,加上向量y
函数 mublasCcopy
mublasStatus mublasCcopy(
mublasHandle_t handle,
mublas_int n,
const muComplex * x,
mublas_int incx,
muComplex * y,
mublas_int incy
)
BLAS 一级 API
参数:
- handle [mublasHandle_t] mublas库上下文队列的句柄。
- n [mublas_int] 从x复制到y的元素数量。
- x 设备指针,存储向量x。
- incx [mublas_int] 指定x元素的增量。
- y 设备指针,存储向量y。
- incy [mublas_int] 指定y元素的增量。
copy将每个元素x[i]复制到y[i],对于i = 1, \dots, n。
函数 mublasScopy
mublasStatus mublasScopy(
mublasHandle_t handle,
mublas_int n,
const float * x,
mublas_int incx,
float * y,
mublas_int incy
)
函数 mublasDcopy
mublasStatus mublasDcopy(
mublasHandle_t handle,
mublas_int n,
const double * x,
mublas_int incx,
double * y,
mublas_int incy
)
函数 mublasZcopy
mublasStatus mublasZcopy(
mublasHandle_t handle,
mublas_int n,
const muDoubleComplex * x,
mublas_int incx,
muDoubleComplex * y,
mublas_int incy
)
BLAS 一级 API
参数:
- handle [mublasHandle_t] mublas库上下文队列的句柄。
- n [mublas_int] 从x复制到y的元素数量。
- x 设备指针,存储向量x。
- incx [mublas_int] 指定x元素的增量。
- y 设备指针,存储向量y。
- incy [mublas_int] 指定y元素的增量。
copy将每个元素x[i]复制到y[i],对于i = 1 , ... , n
函数 mublasSdot
mublasStatus mublasSdot(
mublasHandle_t handle,
mublas_int n,
const float * x,
mublas_int incx,
const float * y,
mublas_int incy,
float * result
)
函数 mublasZdotc
mublasStatus mublasZdotc(
mublasHandle_t handle,
mublas_int n,
const muDoubleComplex * x,
mublas_int incx,
const muDoubleComplex * y,
mublas_int incy,
muDoubleComplex * result
)
函数 mublasDdot
mublasStatus mublasDdot(
mublasHandle_t handle,
mublas_int n,
const double * x,
mublas_int incx,
const double * y,
mublas_int incy,
double * result
)
函数 mublasZdotu
mublasStatus mublasZdotu(
mublasHandle_t handle,
mublas_int n,
const muDoubleComplex * x,
mublas_int incx,
const muDoubleComplex * y,
mublas_int incy,
muDoubleComplex * result
)
BLAS 一级 API
参数:
- handle [mublasHandle_t] mublas库上下文队列的句柄。
- n [mublas_int] x和y中的元素数量。
- x 设备指针,存储向量x。
- incx [mublas_int] 指定x元素的增量。
- y 设备指针,存储向量y。
- incy [mublas_int] 指定y元素的增量。
- result 设备指 针或主机指针,用于存储点积。如果,则返回为0.0。
**dot(u)**执行向量x和y的点积:
dotc执行复向量x的共轭和复向量y的点积:
函数 mublasCdotu
mublasStatus mublasCdotu(
mublasHandle_t handle,
mublas_int n,
const muComplex * x,
mublas_int incx,
const muComplex * y,
mublas_int incy,
muComplex * result
)
BLAS 一级 API。
参数:
- handle [mublasHandle_t] mublas库上下文队列的句柄。
- n [mublas_int] x和y中的元素数量。
- x 设备指针,存储向量x。
- incx [mublas_int] 指定x元素的增量。
- y 设备指针,存储向量y。
- incy [mublas_int] 指定y元素的增量。
- result 设备指针或主机指针,用于存储点积。如果,则返回为0.0。
**dot(u)**执行向量x和y的点积:
dotc执行复向量x的共轭和复向量y的点积:
函数 mublasCgbmv
mublasStatus mublasCgbmv(
mublasHandle_t handle,
mublasOperation_t trans,
mublas_int m,
mublas_int n,
mublas_int kl,
mublas_int ku,
const muComplex * alpha,
const muComplex * A,
mublas_int lda,
const muComplex * x,
mublas_int incx,
const muComplex * beta,
muComplex * y,
mublas_int incy
)
BLAS 二级 API
参数:
- handle: [mublasHandle_t] mublas库上下文队列的句柄。
- trans: [mublasOperation_t] 指示矩阵是否转置(共轭)。
- m: [mublas_int] 矩阵的行数。
- n: [mublas_int] 矩阵的列数。
- kl: [mublas_int] 的次对角线数量。
- ku: [mublas_int] 的超对角线数量。
- alpha: 设备指针或主机指针,指定标量。
- A: 设备指针,存储带状矩阵。矩阵包含前导乘以部分的系数。 主对角线位于行,第一超对角线位于行的右侧,第一次对角线位于行的左侧。结构在次/超对角线上下传播。
- lda: [mublas_int] 的前导维度。必须。
- x: 设备指针,存储向量。
- incx: [mublas_int] 指定元素的增量。
- beta: 设备指针或主机指针,指定标量。
- y: 设备指针,存储向量。
- incy: [mublas_int] 指定元素的增量。
gbmv函数执行以下矩阵-向量操作之一:
其中:
- 和是标量。
- 和是向量。
- 是一个带状矩阵,有次对角线和超对角线。
示例
例如,当,,和时:
矩阵:
矩阵将以压缩格式存储,考虑次和超对角线。不对应数据的空元素将不会被引用。
函数 mublasSgbmv
mublasStatus mublasSgbmv(
mublasHandle_t handle,
mublasOperation_t trans,
mublas_int m,
mublas_int n,
mublas_int kl,
mublas_int ku,
const float * alpha,
const float * A,
mublas_int lda,
const float * x,
mublas_int incx,
const float * beta,
float * y,
mublas_int incy
)
函数 mublasDgbmv
mublasStatus mublasDgbmv(
mublasHandle_t handle,
mublasOperation_t trans,
mublas_int m,
mublas_int n,
mublas_int kl,
mublas_int ku,
const double * alpha,
const double * A,
mublas_int lda,
const double * x,
mublas_int incx,
const double * beta,
double * y,
mublas_int incy
)
函数 mublasZgbmv
mublasStatus mublasZgbmv(
mublasHandle_t handle,
mublasOperation_t trans,
mublas_int m,
mublas_int n,
mublas_int kl,
mublas_int ku,
const muDoubleComplex * alpha,
const muDoubleComplex * A,
mublas_int lda,
const muDoubleComplex * x,
mublas_int incx,
const muDoubleComplex * beta,
muDoubleComplex * y,
mublas_int incy
)
BLAS 二级 API
参数:
- handle: [mublasHandle_t] mublas库上下文队列的句柄。
- trans: [mublasOperation_t] 指示矩阵是否转置(共轭)。
- m: [mublas_int] 矩阵的行数。
- n: [mublas_int] 矩阵的列数。
- kl: [mublas_int] 的次对角线数量。
- ku: [mublas_int] 的超对角线数量。
- alpha: 设备指针或主机指针,指定标量。
- A: 设备指针,存储带状矩阵。矩阵包含前导部分的系数。 主对角线位于行,第一超对角线位于行的右侧,第一
函数 mublasZher2k
mublasStatus mublasZher2k(
mublasHandle_t handle,
mublasFillMode_t uplo,
mublasOperation_t trans,
mublas_int n,
mublas_int k,
const muDoubleComplex * alpha,
const muDoubleComplex * A,
mublas_int lda,
const muDoubleComplex * B,
mublas_int ldb,
const double * beta,
muDoubleComplex * C,
mublas_int ldc
)
BLAS Level 3 API
- handle: [mublasHandle_t] mublas库上下文队列的句柄。
- uplo: [mublasFillMode_t]
MUBLAS_FILL_MODE_UPPER: 是一个上三角矩阵。MUBLAS_FILL_MODE_LOWER: 是一个下三角矩阵。
- trans: [mublasOperation_t]
MUBLAS_OP_C: ,MUBLAS_OP_N: ,
- n: [mublas_int] 矩阵 的行数和列数。必须满足 。
- k: [mublas_int] 的列数。必须满足 。
- alpha: 标量 。当 时,不引用 ,且在进入前不需要设置 。
- A: 存储在GPU上的矩阵 的指针。矩阵尺寸为:
- 当 时,
- 当 时。
- 仅访问上/下三角部分。
- lda: [mublas_int] 的领先维度。
- 如果 ,则 。
- 否则,。
- B: 存储在GPU上的矩阵 的指针。矩阵尺寸为:
- 当 时,
- 当 时。
- 仅访问上/下三角部分。
- ldb: [mublas_int] 的领先维度。
- 如果 ,则 。
- 否则,。
- beta: 标量 。当 时,不需要在进入前设置 。
- C: 存储在GPU上的矩阵 的指针。对角线元素的虚部不访问,并假定为0,除非执行快速返回。
- ldc: [mublas_int] 的领先维度。必须满足 。
操作
her2k 函数执行矩阵-矩阵操作的Hermitian秩-2k更新:
其中:
- 和 是标量。
- 和 是 矩阵。
- 是一个 Hermitian 矩阵。
- 如果 ,则 且 。
- 如果 ,则 且 。
函数 mublasCherk
mublasStatus mublasCherk(
mublasHandle_t handle,
mublasFillMode_t uplo,
mublasOperation_t transA,
mublas_int n,
mublas_int k,
const float * alpha,
const muComplex * A,
mublas_int lda,
const float * beta,
muComplex * C,
mublas_int ldc
)
函数 mublasZherk
mublasStatus mublasZherk(
mublasHandle_t handle,
mublasFillMode_t uplo,
mublasOperation_t transA,
mublas_int n,
mublas_int k,
const double * alpha,
const muDoubleComplex * A,
mublas_int lda,
const double * beta,
muDoubleComplex * C,
mublas_int ldc
)
BLAS Level 3 API
参数:
- handle: [mublasHandle_t] mublas库上下文队列的句柄。
- uplo: [mublasFillMode_t]
MUBLAS_FILL_MODE_UPPER: 是一个上三角矩阵。MUBLAS_FILL_MODE_LOWER: 是一个下三角矩阵。
- transA: [mublasOperation_t]
MUBLAS_OP_C:MUBLAS_OP_N:
- n: [mublas_int] 矩阵 的行数和列数。必须满足 。
- k: [mublas_int] 的列数。必须满足 。
- alpha: 标量 。当 时,不引用 ,且在进入前不需要设置 。
- A: 存储在GPU上的矩阵 的指针。矩阵尺寸为:
- 当 时,
- 当 时。
- 仅访问上/下三角部分。
- lda: [mublas_int] 的领先维度。
- 如果 ,则 。
- 否则,。
- beta: 标量 。当 时,不需要在进入前设置 。
- C: 存储在GPU上的矩阵 的指针。对角线元素的虚部不访问,并假定为0,除非执行快速返回。
- ldc: [mublas_int] 的领先维度。必须满足 。
操作
herk 函数执行矩阵-矩阵操作的Hermitian秩-k更新:
其中:
- 和 是标量。
- 是一个 矩阵。
- 是一个 Hermitian 矩阵,存储为上三角或下三角。
- 如果 ,则 且 是 。
- 如果 ,则 且 是 。
函数 mublasCherkStridedBatched
mublasStatus mublasCherkStridedBatched(
mublasHandle_t handle,
mublasFillMode_t uplo,
mublasOperation_t transA,
mublas_int n,
mublas_int k,
const float * alpha,
const muComplex * A,
mublas_int lda,
mublas_stride stride_A,
const float * beta,
muComplex * C,
mublas_int ldc,
mublas_stride stride_C,
mublas_int batch_count
)
BLAS Level 3 API
参数:
- handle: [mublasHandle_t] mublas库上下文队列的句柄。
- uplo: [mublasFillMode_t]
MUBLAS_FILL_MODE_UPPER: 是一个上三角矩阵。MUBLAS_FILL_MODE_LOWER: 是一个下三角矩阵。
- transA: [mublasOperation_t]
MUBLAS_OP_C:MUBLAS_OP_N:
- n: [mublas_int] 矩阵 的行数和列数。必须满足 。
- k: [mublas_int] 的列数。必须满足 。
- alpha: 标量 。当 时,不引用 ,且在进入前不需要设置 。
- A: 设备指针,指向GPU上的第一个矩阵 。矩阵尺寸为:
- 当 。
- 当 。
- lda: [mublas_int] 的领先维度。
- 如果 ,则 。
- 否则,。
- stride_A: [mublas_stride] 从一个矩阵 () 的开始到下一个矩阵 () 的步长。
- beta: 标量 。当 时,不需要在进入前设置 。
- C: 设备指针,指向GPU上的第一个矩阵 。对角线元素的虚部不访问,并假定为0,除非执行快速返回。
- ldc: [mublas_int] 的领先维度。必须满足 。
- stride_C: [mublas_stride] 从一个矩阵 () 的开始到下一个矩阵 () 的步长。
- batch_count: [mublas_int] 批次中的实例数量。
操作
herk_strided_batched 函数执行一批矩阵-矩阵操作的Hermitian秩-k 更新:
其中:
- 和 是标量。
- 是一个 矩阵。
- 是一个 Hermitian 矩阵。
- 如果 ,则 。
- 如果 ,则 。
函数 mublasChpmv
mublasStatus mublasChpmv(
mublasHandle_t handle,
mublasFillMode_t uplo,
mublas_int n,
const muComplex * alpha,
const muComplex * AP,
const muComplex * x,
mublas_int incx,
const muComplex * beta,
muComplex * y,
mublas_int incy
)
函数 mublasZhpmv
mublasStatus mublasZhpmv(
mublasHandle_t handle,
mublasFillMode_t uplo,
mublas_int n,
const muDoubleComplex * alpha,
const muDoubleComplex * AP,
const muDoubleComplex * x,
mublas_int incx,
const muDoubleComplex * beta,
muDoubleComplex * y,
mublas_int incy
)
BLAS Level 2 API
参数:
- handle: [mublasHandle_t] mublas库上下文队列的句柄。
- uplo: [mublasFillMode_t]
MUBLAS_FILL_MODE_UPPER: Hermitian矩阵 的上三角部分在 中提供。MUBLAS_FILL_MODE_LOWER: Hermitian矩阵 的下三角部分在 中提供。
- n: [mublas_int] 矩阵 的阶数。必须满足 。
- alpha: 设备指针或主机指针,指向标量 。
- AP: 设备指针,存储指定三角部分的 Hermitian 矩阵 的打包版本。大小至少为 。如果 ,则提供 的上三角部分。矩阵打包如下:
- ,
- ,
- ,依此类推。
- 如果 ,则提供 的下三角部分。矩阵打包如下:
- ,
- ,
- ,依此类推。
- 注意:对角线元素的虚部不访问,并假定为0。
- x: 设备指针,存储向量 。
- incx: [mublas_int] 指定 元素的增量。
- beta: 设备指针或主机指针,指向标量 。
- y: 设备指针,存储向量 。
- incy: [mublas_int] 指定 元素的增量。
操作
hpmv 函数执行矩阵-向量操作:
其中:
- 和 是标量。
- 是一个 Hermitian 矩阵,以打包形式提供。
- 和 是 元素向量。
函数 mublasChpr
mublasStatus mublasChpr(
mublasHandle_t handle,
mublasFillMode_t uplo,
mublas_int n,
const float * alpha,
const muComplex * x,
mublas_int incx,
muComplex * AP
)
函数 mublasZhpr
mublasStatus mublasZhpr(
mublasHandle_t handle,
mublasFillMode_t uplo,
mublas_int n,
const double * alpha,
const muDoubleComplex * x,
mublas_int incx,
muDoubleComplex * AP
)
BLAS Level 2 API
参数:
- handle: [mublasHandle_t] mublas库上下文队列的句柄。
- uplo: [mublasFillMode_t] 指定 的上三角或下三角部分在 中提供。
MUBLAS_FILL_MODE_UPPER: 的上三角部分在 中提供。MUBLAS_FILL_MODE_LOWER: 的下三角部分在 中提供。
- n: [mublas_int] 矩阵 的行数和列数。必须至少为0。
- alpha: 设备或主机指针,指向标量 。
- x: 设备指针,存储向量 。
- incx: [mublas_int] 指定 元素的增量。
- AP: 设备指针,存储指定三角部分的Hermitian矩阵 的打包版本。大小必须至少为 。
- 如果 :提供 的上三角部分。
- 如果 :提供 的下三角部分。
操作
hpr 函数执行矩阵-向量操作:
其中:
- 是一个实数标量。
- 是一个向量。
- 是一个 Hermitian 矩阵,以打包形式提供。
函数 mublasChpr2
mublasStatus mublasChpr2(
mublasHandle_t handle,
mublasFillMode_t uplo,
mublas_int n,
const muComplex * alpha,
const muComplex * x,
mublas_int incx,
const muComplex * y,
mublas_int incy,
muComplex * AP
)
函数 mublasZhpr2
mublasStatus mublasZhpr2(
mublasHandle_t handle,
mublasFillMode_t uplo,
mublas_int n,
const muDoubleComplex * alpha,
const muDoubleComplex * x,
mublas_int incx,
const muDoubleComplex * y,
mublas_int incy,
muDoubleComplex * AP
)
BLAS Level 2 API
参数:
- handle: [mublasHandle_t] mublas库上下文队列的句柄。
- uplo: [mublasFillMode_t] 指定 的上三角或下三角部分在 中提供。
MUBLAS_FILL_MODE_UPPER: 的上三角部分在 中提供。MUBLAS_FILL_MODE_LOWER: 的下三角部分在 中提供。
- n: [mublas_int] 矩阵 的行数和列数。必须至少为0。
- alpha: 设备或主机指针,指向复数标量 。
- x: 设备指针,存储向量 。
- incx: [mublas_int] 指定 元素的增量。
- y: 设备指针,存储向量 。
- incy: [mublas_int] 指定 元素的增量。
- AP: 设备指针,存储指定三角部分的Hermitian矩阵 的打包版本。大小必须至少为 。
- 如果 :提供 的上三角部分。
- 如果 :提供 的下三角部分。
操作
hpr2 函数执行矩阵-向量操作:
其中:
- 是一个复数标量。
- 和 是向量。
- 是一个 Hermitian 矩阵,以打包形式提供。
函数 mublasSnrm2
mublasStatus mublasSnrm2(
mublasHandle_t handle,
mublas_int n,
const float * x,
mublas_int incx,
float * result
)
函数 mublasScnrm2
mublasStatus mublasScnrm2(
mublasHandle_t handle,
mublas_int n,
const muComplex * x,
mublas_int incx,
float * result
)
函数 mublasDznrm2
mublasStatus mublasDznrm2(
mublasHandle_t handle,
mublas_int n,
const muDoubleComplex * x,
mublas_int incx,
double * result
)
函数 mublasDnrm2
mublasStatus mublasDnrm2(
mublasHandle_t handle,
mublas_int n,
const double * x,
mublas_int incx,
double * result
)
BLAS Level 1 API
参数:
- handle: [mublasHandle_t] mublas库上下文队列的句柄。
- n: [mublas_int] 向量 中的元素数量。
- x: 设备指针,存储向量 。
- incx: [mublas_int] 指定 元素的增量。
- result: 设备或主机指针,存储 结果。如果 或 ,则返回值为 。
操作
nrm2 函数计算实数或复数向量的欧几里得范数:
- 对于实数向量:
- 对于复数向量:
函数 mublasSrot
mublasStatus mublasSrot(
mublasHandle_t handle,
mublas_int n,
float * x,
mublas_int incx,
float * y,
mublas_int incy,
const float * c,
const float * s
)
函数 mublasCsrot
mublasStatus mublasCsrot(
mublasHandle_t handle,
mublas_int n,
muComplex * x,
mublas_int incx,
muComplex * y,
mublas_int incy,
const float * c,
const float * s
)
函数 mublasDrot
mublasStatus mublasDrot(
mublasHandle_t handle,
mublas_int n,
double * x,
mublas_int incx,
double * y,
mublas_int incy,
const double * c,
const double * s
)
函数 mublasZdrot
mublasStatus mublasZdrot(
mublasHandle_t handle,
mublas_int n,
muDoubleComplex * x,
mublas_int incx,
muDoubleComplex * y,
mublas_int incy,
const double * c,
const double * s
)
BLAS Level 1 API
参数:
- handle: [mublasHandle_t] mublas 库上下文队列的句柄。
- n: [mublas_int] 向量 和 中的元素数量。
- x: 设备指针,存储向量 。
- incx: [mublas_int] 指定 元素的增量。
- y: 设备指针,存储向量 。
- incy: [mublas_int] 指定 元素的增量。
- c: 设备或主机指针,存储旋转矩阵的标量余弦分量 ()。
- s: 设备或主机指针,存储旋转矩阵的标量正弦分量 ()。
操作
rot 函数将Givens旋转矩阵应用于向量 和 。旋转由余弦和正弦分量 和 定义,分别与角度 相关:
其中:
函数 mublasSrotg
mublasStatus mublasSrotg(
mublasHandle_t handle,
float * a,
float * b,
float * c,
float * s
)
函数 mublasCrotg
mublasStatus mublasCrotg(
mublasHandle_t handle,
muComplex * a,
muComplex * b,
float * c,
muComplex * s
)
函数 mublasDrotg
mublasStatus mublasDrotg(
mublasHandle_t handle,
double * a,
double * b,
double * c,
double * s
)
函数 mublasZrotg
mublasStatus mublasZrotg(
mublasHandle_t handle,
muDoubleComplex * a,
muDoubleComplex * b,
double * c,
muDoubleComplex * s
)
BLAS Level 1 API
参数:
- handle: [mublasHandle_t] mublas库上下文队列的句柄。
- a: 设备指针或主机指针,指向输入向量元素,用 覆盖。
- b: 设备指针或主机指针,指向输入向量元素,用 覆盖。
- c: 设备指针或主机指针,指向Givens旋转的余弦元素。
- s: 设备指针或主机指针,指向Givens旋转的正弦元素。
操作
rotg 函数为向量 创建Givens旋转矩阵。旋转矩阵由余弦和正弦分量 和 定义,并应用于向量:
其中:
- 是 旋转后的新值。
- 是 旋转后的新值。
旋转的结果存储在 和 中,分别为 和 。
如果指针模式设置为 MUBLAS_POINTER_MODE_HOST,则该函数阻塞CPU直到GPU完成并将结果可用在主机内存中。如果设置为 MUBLAS_POINTER_MODE_DEVICE,则该函数立即返回,需要同步才能读取结果。
函数 mublasSrotm
mublasStatus mublasSrotm(
mublasHandle_t handle,
mublas_int n,
float * x,
mublas_int incx,
float * y,
mublas_int incy,
const float * param
)
函数 mublasDrotm
mublasStatus mublasDrotm(
mublasHandle_t handle,
mublas_int n,
double * x,
mublas_int incx,
double * y,
mublas_int incy,
const double * param
)
BLAS Level 1 API
参数:
- handle: [mublasHandle_t] mublas库上下文队列的句柄。
- n: [mublas_int] 向量 和 中的元素数量。
- x: 设备指针,存储向量 。
- incx: [mublas_int] 指定 元素的增量。
- y: 设备指针,存储向量 。
- incy: [mublas_int] 指定 元素的增量。
- param: 设备或主机向量,定义旋转的5个元素:
param[0]: 标志(定义矩阵 的形式)。param[1]: (第一行,第一列的元素)。param[2]: (第二行,第一列的元素)。param[3]: (第一行,第二列的元素)。param[4]: (第二行,第二列的元素)。
标志定义矩阵 的形式:
flag = -1:flag = 0:flag = 1:flag = -2:
param 向量可以存储在主机或设备内存中,位置由调用 mublasSetPointerMode 指定。
操作
rotm 函数将由 param 定义的修改后的Givens旋转矩阵应用于向量 和 。执行的操作是:
其中 是由 param 向量定义的四种可能矩阵之一。
函数 mublasSrotmg
mublasStatus mublasSrotmg(
mublasHandle_t handle,
float * d1,
float * d2,
float * x1,
const float * y1,
float * param
)
函数 mublasDrotmg
mublasStatus mublasDrotmg(
mublasHandle_t handle,
double * d1,
double * d2,
double * x1,
const double * y1,
double * param
)
BLAS Level 1 API
参数:
- handle [mublasHandle_t] mublas库上下文队列的句柄。
- d1 设备指针或主机指针,指向输入标量,将被覆盖。
- d2 设备指针或主机指针,指向输入标量,将被覆盖。
- x1 设备指针或主机指针,指向输入标量,将被覆盖。
- y1 设备指针或主机指针,指向输入标量。
- param 设备向量或主机向量,定义旋转的5个元素。param[0] = 标志 param[1] = H11 param[2] = H21 param[3] = H12 param[4] = H22 标志参数定义矩阵 H 的形式: 标志 = -1 => H = ( H11 H12 H21 H22 ) 标志 = 0 => H = ( 1.0 H12 H21 1.0 ) 标志 = 1 => H = ( H11 1.0 -1.0 H22 ) 标志 = -2 => H = ( 1.0 0.0 0.0 1.0 ) param 可以存储在主机或设备内存中,位置由调用 mublasSetPointerMode 指定。
rotmg 为向量 (d1 * x1, d2 * y1) 创建修改后的Givens旋转矩阵。参数可以存储在主机或设备内存中,位置由调用 mublasSetPointerMode 指定。如果指针模式设置为 MUBLAS_POINTER_MODE_HOST,则该函数阻塞CPU直到GPU完成并将结果可用在主机内存中。如果指针模式设置为 MUBLAS_POINTER_MODE_DEVICE,则该函数立即返回,需要同步才能读取结果。
参数:
- handle: [mublasHandle_t] mublas库上下文队列的句柄。
- d1: 设备指针或主机指针,指向输入标量,将被覆盖。
- d2: 设备指针或主机指针,指向输入标量,将被覆盖。
- x1: 设备指针或主机指针,指向输入标量,将被覆盖。
- y1: 设备指针或主机指针,指向输入标量。
- param: 设备或主机向量,定义旋转的5个元素:
param[0]: 标志(定义矩阵 的形式)。param[1]: (第一行,第一列的元素)。param[2]: (第二行,第一列的元素)。param[3]: (第一行,第二列的元素)。param[4]: (第二行,第二列的元素)。
标志定义矩阵 的形式:
flag = -1:flag = 0:flag = 1:flag = -2:
param 向量可以存储在主机或设备内存中,位置由调用 mublasSetPointerMode 指定。
操作
rotmg 函数为向量 创建修改后的Givens旋转矩阵。参数可以存储在主机或设备内存中,位置由调用 mublasSetPointerMode 指定。
如果指针模式设置为 MUBLAS_POINTER_MODE_HOST,则该函数阻塞CPU直到GPU完成并将结果可用在主机内存中。
如果指针模式设置为 MUBLAS_POINTER_MODE_DEVICE,则该函数立即返回,需要同步才能读取结果。
函数 mublasSsbmv
mublasStatus mublasSsbmv(
mublasHandle_t handle,
mublasFillMode_t uplo,
mublas_int n,
mublas_int k,
const float * alpha,
const float * A,
mublas_int lda,
const float * x,
mublas_int incx,
const float * beta,
float * y,
mublas_int incy
)