KmlScaissCsiSet?I?

设置迭代求解的相关参数。

接口定义

C Interface:

int KmlScaissCsiSetSII(KmlScasolverTask **handle, enum KmlSolverParam param, const int *data, int nd);

int KmlScaissCsiSetSIS(KmlScasolverTask **handle, enum KmlSolverParam param, const float *data, int nd);

int KmlScaissCsiSetDII(KmlScasolverTask **handle, enum KmlSolverParam param, const int *data, int nd);

int KmlScaissCsiSetDID(KmlScasolverTask **handle, enum KmlSolverParam param, const double *data, int nd);

参数

参数名

类型

描述

输入/输出

handle

KmlScasolverTask **

求解器句柄,传入之前步骤的变量。

输入/输出

param

enum KmlSolverParam

  • KMLSS_THRESHOLD表示迭代残差相对阈值。
  • KMLSS_ABS_TOLERANCE表示迭代残差绝对阈值。
  • KMLSS_MAX_ITERATION_COUNT表示最大迭代次数。
  • KMLSS_PRECONDITIONER_TYPE表示预条件子类型。
  • KMLSS_VECTOR_NORM_TYPE 表示迭代残差的计算范数
  • KMLSS_MATRIX_FORMAT 表示矩阵对角块稀疏存储格式。
  • KMLSS_OFFDIAG_MATRIX_FORMAT 表示矩阵非对角块稀疏存储格式。
  • KMLSS_SPECTRUM_BOUNDS 表示最小和最大特征值的数组。

输入

data

  • 在KmlScaissCsiSetSII 中为const int *。
  • 在KmlScaissCsiSetSIS中为const float *。
  • KmlScaissCsiSetDII中为const int *。
  • KmlScaissCsiSetDID中为const double *。

迭代求解相关参数数组(如阈值、最大迭代次数等)。

当前可选的计算范数:

  • 1-NORM:KMLSS_L1
  • 2-NORM:KMLSS_L2

当前可选的稀疏矩阵存储格式:

  • CSR格式:KMLSS_CSR
  • ELLPACK格式:KMLSS_ELL
  • COO格式:KMLSS_COO
  • ELLPACK_COO混合格式:KMLSS_SELLCOO

当前可选择的预条件子类型:

  • JACOBI预条件子:KMLSS_JACOBI
  • BLOCK JACOBI预条件子:KMLSS_BJACOBI
  • AMG预条件子:KMLSS_AMG

输入

nd

int

data数组元素个数。

输入

返回值

返回值

类型

描述

KMLSS_NO_ERROR

int

正常执行。

KMLSS_DATA_SIZE

int

参数nd不等于1。

KMLSS_NULL_ARGUMENT

int

handle和data中存在空参数。

KMLSS_BAD_SELECTOR

int

param为无效参数。

KMLSS_BAD_PRECONDITIONER

int

选择的预条件子暂未实现。

依赖

#include "kml_scaiss.h"

示例代码请参见示例