KmlMgSolverCreate

创建求解器句柄。

接口定义

C Interface:

KmlMgStatus KmlMgSolverCreate(KmlMgSolverH* pSolver, MPI_Comm comm, const KmlMgSolverOptions* options);

参数

参数名

类型

描述

输入/输出

pSolver

KmlMgSolverH*

求解器句柄,solver不可为空指针

输入/输出

comm

MPI_Comm

求解器通信子,须与求解矩阵中的通信子保持一致,否则可能会出现未知问题

输入

options

const KmlMgSolverOptions*

求解器配置信息

输入

返回值

返回值

类型

描述

KML_MG_OK

int

正常执行

KML_MG_ERR_INVALID_PARAM

int

参数无效

MG_ERR_UNSUPPORTED

int

暂不支持的功能

KML_MG_ERR_NO_MEMORY

int

分配内存失败

KML_MG_ERR_EXCEEDS_LIMIT

int

超过设置限制

KML_MG_ERR_INCOMPATIBLE

int

版本不兼容

KML_MG_ERR_NO_REQUIRED_FIELD

int

没设置必填字段

KML_MG_ERR_UNKNOWN_TYPE

int

未知的类型

KML_MG_ERR_THIRD_PART

int

内部调用第三方错误

KML_MG_ERR_INCONSISTENT

int

传递信息不一致

KML_MG_ERR_UNEXPECTED_CALL_ORDER

int

预期之外的调用顺序

KML_MG_ERR_MATRIX_VALUE_IS_NULL

int

矩阵值为空

KML_MG_ERR_NO_RESOURCE

int

资源未就绪

结构体说明

KmlMgSolverOptions

字段名

类型

描述

fieldMask

uint64_t

配置生效的字段掩码。非0的位代表配置对应字段指定的值,0的位代表使用默认值,可配置的掩码位请参见具体字段的说明。

indexType

KmlMgIndexType

坐标类型,有如下值。

  • KML_MG_INDEX_INT32(目前只支持32位int)
  • KML_MG_INDEX_INT64

掩码位:KML_MG_SOLVER_OPTIONS_INDEX_TYPE

kspValueType

KmlMgValueType

输入矩阵的数值类型,有如下值。(目前实现要求与pcCalcType字段保持一致,支持的精度组合请看下方精度组合表)

  • KML_MG_VALUE_FP16
  • KML_MG_VALUE_FP32
  • KML_MG_VALUE_FP64

掩码位:KML_MG_SOLVER_OPTIONS_KSP_VALUE_TYPE

pcValueType

KmlMgValueType

预条件子(多重网格)的数值类型,有如下值。(目前只支持FP16、FP32和FP64,支持的精度组合请看下方精度组合表)

  • KML_MG_VALUE_FP16
  • KML_MG_VALUE_FP32
  • KML_MG_VALUE_FP64

掩码位:KML_MG_MATRIX_INFO_STORE

pcCalcType

KmlMgValueType

预条件子(多重网格)的计算数值类型,有如下值。(目前只支持FP32和FP64,支持的精度组合请看下方精度组合表)

  • KML_MG_VALUE_FP16
  • KML_MG_VALUE_FP32
  • KML_MG_VALUE_FP64

掩码位:KML_MG_MATRIX_INFO_STORE

ksp

KmlMgSolverKsp

Krylov子空间方法类型,有如下值。

  • KML_MG_SOLVER_NONE
  • KML_MG_SOLVER_BICG
  • KML_MG_SOLVER_CG
  • KML_MG_SOLVER_CR
  • KML_MG_SOLVER_GCR
  • KML_MG_SOLVER_GMRES

掩码位:KML_MG_MATRIX_INFO_STORE

目前支持的精度组合有三种:

组合

kspValueType

pcValueType

pcCalcType

1

KML_MG_VALUE_FP64

KML_MG_VALUE_FP64

KML_MG_VALUE_FP64

2

KML_MG_VALUE_FP32

KML_MG_VALUE_FP32

KML_MG_VALUE_FP32

3

KML_MG_VALUE_FP32

KML_MG_VALUE_FP16

KML_MG_VALUE_FP32

依赖

#include "mg.h"

示例代码请参见示例