中文
注册

KmlDssAnalyze

分析输入矩阵,包括Reordering、符号分解等。

接口定义

C Interface:

int KmlDssAnalyze(KmlDssSolver *solver, const KmlSolverMatrix *matrix, const KmlDssAnalyzeOption *option);

参数

参数名

类型

描述

输入/输出

solver

KmlDssSolver *

由KmlDssInit创建的求解器句柄。

输入

matrix

KmlSolverMatrix *

矩阵句柄,由KmlSolverMatrixCreate函数创建,不可为空指针。

输入

option

KmlDssAnalyzeOption *

分析阶段配置选项,不可为空指针,具体内容如表1所示。

输入

表1 KmlDssAnalyzeOption结构体字段描述

字段名

类型

描述

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_MATCHING_OFF表示关闭稳定性,默认选项。
  • KMLDSS_MATCHING_MC64表示最大权重匹配算法(Maximum Weighted Matching Algorithm),可以改善数值分解过程中的主元大小,一般用于非对称矩阵。
  • KMLDSS_MATCHING_SMC64表示对称最大权重匹配算法(Symmetric Maximum Weighted Matching Algorithm),可以改善数值分解过程中的主元大小,一般用于对称或结构对称矩阵。

掩码位:KMLDSS_ANALYZE_OPTION_MATCHING_TYPE

nThreadsMatching

int32_t

matching阶段线程数,默认和分析阶段线程数相同。

掩码位:KMLDSS_ANALYZE_OPTION_NTHREADS_MATCHING

rdrType

KmlDssRdrType

Fill-in reduction算法类型,有如下值。

  • KMLDSS_RDR_KRDR表示KML Reorder做Fill-in reduction,默认选项。
  • KMLDSS_RDR_CUSTOM表示使用自定义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);

  • 如果rdrType未设置为KMLDSS_RDR_CUSTOM时忽略该字段。
  • 如果rdrType设置成了KMLDSS_RDR_CUSTOM但该字段及rdrPerm字段均未设置,则不进行Fill-in reduction,优先级为rdrPerm>customRdrAlgo。

掩码位: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]行/列。

  • 如果rdrType未设置为KMLDSS_RDR_CUSTOM时忽略该字段。
  • 如果rdrType设置成了KMLDSS_RDR_CUSTOM但该字段及customRdrAlgo字段均未设置,则等价于KMLDSS_FR_NONE,优先级为rdrPerm>customRdrAlgo。

掩码位:KMLDSS_ANALYZE_OPTION_RDR_PERM

pivotingType

KmlDssPivotingType

pivoting算法类型,有如下值。

  • KMLDSS_PIVOTING_OFF表示关闭动态选主元,默认选项。
  • KMLDSS_PIVOTING_LOCAL表示局部动态选主元。

掩码位: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_MATRIX_NO_TRANS表示求解原始线性系统,默认选项。
  • KMLDSS_MATRIX_TRANS表示求解转置后的线性系统。

掩码位: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"

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词