muSOLVER API 参考
函数
| 名称 | |
|---|---|
| MUSOLVER_EXPORT mublasStatus_t | musolverXgetrs_bufferSize(mublasOperation_t trans, const int n, const int nrhs, int * buffersize) 计算 GETRS 函数所需的工作空间缓冲区大小。 |
| MUSOLVER_EXPORT mublasStatus_t | musolverXgetrs(mublasHandle_t handle, const mublasOperation_t trans, const int n, const int nrhs, float * A, const int lda, const int * ipiv, float * B, const int ldb, void * buffer) GETRS 在其分解形式中解 n 个线性方程组。 |
| MUSOLVER_EXPORT mublasStatus_t | musolverXgelsBatched_bufferSize(mublasOperation_t trans, const int m, const int n, const int nrhs, const int batch_count, int * buffer_size) 计算解决一批广义最小二乘问题的所需工作空间缓冲区大小。 |
| MUSOLVER_EXPORT mublasStatus_t | musolverXgelsBatched(mublasHandle_t handle, mublasOperation_t trans, const int m, const int n, const int nrhs, muComplex *const A[], const int lda, muComplex *const B[], const int ldb, int * info, const int batch_count, void * buffer) GELS_BATCHED 使用 GEQRF_BATCHED 计算的 QR 分解(或 GELQF_BATCHED 计算的 LQ 分解)解决一批超定(或欠定)线性方程组。 |
| MUSOLVER_EXPORT mublasStatus_t | musolverXgetrf_bufferSize(const int m, const int n, const bool pivot, int * buffersize) 计算一般 m-by-n 矩阵 A 的 LU 分解所需的工作空间大小。 |
| MUSOLVER_EXPORT mublasStatus_t | musolverXgetrf(mublasHandle_t handle, const int m, const int n, float * A, const int lda, int * ipiv, int * info, void * buffer) GETRF 使用行交换的部分主元进行一般 m-by-n 矩阵 A 的 LU 分解。 |
| MUSOLVER_EXPORT mublasStatus_t | musolverXgetriBatched(mublasHandle_t handle, const int n, float *const A[], const int lda, int * ipiv, const int strideP, int * info, const int batch_count) GETRI_BATCHED 使用 GETRF_BATCHED 计算的 LU 分解来求一批 n-by-n 矩阵的逆。 |
| MUSOLVER_EXPORT mublasStatus_t | musolverXgetrfBatched_bufferSize(const int m, const int n, const bool pivot, const int batch_count, int * buffersize) 计算一批一般 m-by-n 矩阵的 LU 分解所需的缓冲区大小。 |
| MUSOLVER_EXPORT mublasStatus_t | musolverXgetrfBatched(mublasHandle_t handle, const int m, const int n, float *const A[], const int lda, int * ipiv, const int strideP, int * info, const int batch_count, void * buffer) GETRF_BATCHED 使用行交换的部分主元对一批一般 m-by-n 矩阵进行 LU 分解。 |
函数文档
函数 musolverXgetrs_bufferSize
MUSOLVER_EXPORT mublasStatus_t musolverXgetrs_bufferSize(
mublasOperation_t trans,
const int n,
const int nrhs,
int * buffersize
)
计算 GETRS 函数所需的工作空间缓冲区大小。
参数:
- trans mublasOperation_t。
指定方程组的形式。确定是使用 、 或 解决系统。
- n int. n >= 0.
系统的阶数,即矩阵 A 的行数和列数。
- nrhs int. nrhs >= 0.
右手边的数量,即矩阵 B 的列数。
- buffersize 指向 int 的指针。
musolverXgetrs 函数所需的工作空间缓冲区大小。这个值应该用来为缓冲区分配足够的内存。
这个函数确定 musolverXgetrs 函数所需的工作空间缓冲区大小。缓冲区大小取决于方程组的大小和右手边的数量。
在调用 musolverXgetrs 之前,先调用这个函数来获取缓冲区大小。分配至少这个函数返回大小的缓冲区,并将其实作为 buffer 参数传递给 musolverXgetrs。
这个函数计算的缓冲区大小确保在求解操作期间内部工作空间有足够的空间。
MUSOLVER_EXPORT mublasStatus_t musolverSgetrs_bufferSize(mublasOperation_t trans,
const int n,
const int nrhs,
int* buffersize);
MUSOLVER_EXPORT mublasStatus_t musolverDgetrs_bufferSize(mublasOperation_t trans,
const int n,
const int nrhs,
int* buffersize);
MUSOLVER_EXPORT mublasStatus_t musolverCgetrs_bufferSize(mublasOperation_t trans,
const int n,
const int nrhs,
int* buffersize);
MUSOLVER_EXPORT mublasStatus_t musolverZgetrs_bufferSize(mublasOperation_t trans,
const int n,
const int nrhs,
int* buffersize);
函数 musolverXgetrs
MUSOLVER_EXPORT mublasStatus_t musolverXgetrs(
mublasHandle_t handle,
const mublasOperation_t trans,
const int n,
const int nrhs,
float * A,
const int lda,
const int * ipiv,
float * B,
const int ldb,
void * buffer
)
GETRS 解 n 个变量的 n 个线性方程组的分解形式。
参数:
- handle mublasHandle_t .
- trans mublasOperation_t.
指定方程组的形式。
- n int. n >= 0.
系统的阶数,即 A 的列数和行数。
- nrhs int. nrhs >= 0.
右手边的数量,即矩阵 B 的列数。
- A 类型指针。GPU 上的数组,维度为 lda*n。
分解 A = PLU 返回的 L 和 U 因子。
- lda int. lda >= n.
A 的领先维度。
- ipiv 指向 int 的指针。GPU 上的数组,维度为 n。
GETRF 返回的枢轴索 引。
- B 类型指针。GPU 上的数组,维度为 ldb*nrhs。
输入时,右手边矩阵 B。输出时,解矩阵 X。
- ldb int. ldb >= n.
B 的领先维度。
- buffer 指向 void 的指针。为分解过程分配的工作空间缓冲区。这个缓冲区的大小应该由之前的
[musolverXgetrf_bufferSize()](#function-musolverxgetrf-buffersize)调用确定。缓冲区在分解过程中内部使用,存储临时数据。
根据 trans 的值,它解决以下系统之一:
矩阵 A 由 GETRF 返回的三角因子定义。
MUSOLVER_EXPORT mublasStatus_t musolverSgetrs(mublasHandle_t handle,
const mublasOperation_t trans,
const int n,
const int nrhs,
float* A,
const int lda,
const int* ipiv,
float* B,
const int ldb,
void* buffer);
MUSOLVER_EXPORT mublasStatus_t musolverDgetrs(mublasHandle_t handle,
const mublasOperation_t trans,
const int n,
const int nrhs,
double* A,
const int lda,
const int* ipiv,
double* B,
const int ldb,
void* buffer);
MUSOLVER_EXPORT mublasStatus_t musolverCgetrs(mublasHandle_t handle,
const mublasOperation_t trans,
const int n,
const int nrhs,
muComplex* A,
const int lda,
const int* ipiv,
muComplex* B,
const int ldb,
void* buffer);
MUSOLVER_EXPORT mublasStatus_t musolverZgetrs(mublasHandle_t handle,
const mublasOperation_t trans,
const int n,
const int nrhs,
muDoubleComplex* A,
const int lda,
const int* ipiv,
muDoubleComplex* B,
const int ldb,
void* buffer);
函数 musolverXgelsBatched_bufferSize
MUSOLVER_EXPORT mublasStatus_t musolverXgelsBatched_bufferSize(
mublasOperation_t trans,
const int m,
const int n,
const int nrhs,
const int batch_count,
int * buffer_size
)
计算解决一批广义最小二乘问题的所需工作空间缓冲区大小。
参数:
- trans mublasOperation_t。
指定矩阵操作的形式(无、转置或共轭转置)。
- m int. m >= 0.