KmlDssAnalyze
分析输入矩阵,包括Reordering、符号分解等。
接口定义
C Interface:
int KmlDssAnalyze(KmlDssSolver *solver, const KmlSolverMatrix *matrix, const KmlDssAnalyzeOption *option);
参数
参数名 |
类型 |
描述 |
输入/输出 |
---|---|---|---|
solver |
KmlDssSolver * |
由KmlDssInit创建的求解器句柄。 |
输入 |
matrix |
KmlSolverMatrix * |
矩阵句柄,由KmlSolverMatrixCreate函数创建,不可为空指针。 |
输入 |
option |
KmlDssAnalyzeOption * |
分析阶段配置选项,不可为空指针,具体内容如表1所示。 |
输入 |
字段名 |
类型 |
描述 |
---|---|---|
fieldMask |
uint64_t |
配置生效的字段掩码。非0的位代表配置对应字段指定的值,0的位代表使用默认值,可配置的掩码位请参见具体字段的说明。 |
nThreadsAnalyze |
int32_t |
分析阶段线程数,默认和KmlDssInit阶段设置的求解器初始线程数相同。 掩码位:KMLDSS_ANALYZE_OPTION_NTHREADS_ANALYZE |
nThreadsFactorize |
int32_t |
分解阶段线程数,默认和KmlDssInit阶段设置的求解器初始线程数相同。 掩码位:KMLDSS_ANALYZE_OPTION_NTHREADS_FACTORIZE |
nThreadsSolve |
int32_t |
回代阶段线程数,默认和KmlDssInit阶段设置的求解器初始线程数相同。 掩码位:KMLDSS_ANALYZE_OPTION_NTHREADS_SOLVE |
matchingType |
KmlDssMatchingType |
matching算法类型,有如下值。
掩码位:KMLDSS_ANALYZE_OPTION_MATCHING_TYPE |
nThreadsMatching |
int32_t |
matching阶段线程数,默认和分析阶段线程数相同。 掩码位:KMLDSS_ANALYZE_OPTION_NTHREADS_MATCHING |
rdrType |
KmlDssRdrType |
Fill-in reduction算法类型,有如下值。
掩码位:KMLDSS_ANALYZE_OPTION_RDR_TYPE |
nThreadsRdr |
int32_t |
Fill-in reduction线程数,默认和分析阶段线程数相同。 掩码位:KMLDSS_ANALYZE_OPTION_NTHREADS_RDR |
customRdrAlgo |
KmlDssCustomRdrAlgo |
用户自定义的Fill-in reduction函数,该函数的原型为typedef int (*KmlDssCustomRdrAlgo) (const KmlSolverMatrixStore *store, void *perm, void *iperm, void* arg);
掩码位:KMLDSS_ANALYZE_OPTION_CUSTOM_RDR_ALGO |
customRdrArgs |
void * |
在调用自定义Fill-in reduction函数时会将该字段作为最后一个参数,用户可以通过该字段传入自定义Fill-in reduction函数中需要用到的其它参数。 掩码位:KMLDSS_ANALYZE_OPTION_CUSTOM_RDR_ARGS |
rdrPerm |
void * |
传入用户自定义的Fill-in reduction的perm,映射关系为重排后矩阵的第i行/列是原始矩阵中的第rdrPerm[i]行/列。
掩码位:KMLDSS_ANALYZE_OPTION_RDR_PERM |
pivotingType |
KmlDssPivotingType |
pivoting算法类型,有如下值。
掩码位:KMLDSS_ANALYZE_OPTION_PIVOTING_TYPE |
pivotingThreshold |
double |
pivoting阈值,暂不支持设置。 掩码位:KMLDSS_ANALYZE_OPTION_PIVOTING_THRESHOLD |
batchNRHS |
int64_t |
回代阶段每一批同时求解的最大右端向量个数,该参数为性能优化选项,和实际求解的右端向量个数无关。默认数值为1。 掩码位:KMLDSS_ANALYZE_OPTION_BATCH_NRHS |
schurSize |
int64_t |
部分分解中schur补矩阵的大小。默认数值为0。 掩码位:KMLDSS_ANALYZE_OPTION_SCHUR_SIZE |
schurFormat |
KmlSolverMatrixStoreFormat |
部分分解中schur补矩阵的存储格式,可选矩阵存储格式请参见KmlSolverMatrixCreate()的参数说明,默认值为KMLSS_MATRIX_STORE_DENSE_ROW_MAJOR。 掩码位:KMLDSS_ANALYZE_OPTION_SCHUR_FORMAT |
matrixTransType |
KmlDssMatrixTransType |
转置类型,有如下值。
掩码位:KMLDSS_ANALYZE_OPTION_MATIRX_TRANS_TYPE |
返回值
返回值 |
类型 |
描述 |
---|---|---|
KMLSS_NO_ERROR |
int |
正常执行。 |
KMLSS_INTERNAL_ERROR |
int |
内部错误。 |
KMLSS_NULL_ARGUMENT |
int |
solver,matrix,option存在空参数。 |
依赖
#include "kml_dss.h"