KmlScasolverMatrixCreate

创建矩阵操作句柄。

创建矩阵时是浅拷贝,用户需要保证在KmlScasolverMatrixDestroy前不释放通过参数store指定的内存。

接口定义

C Interface:

int KmlScasolverMatrixCreate(KmlScasolverMatrix **pMatrix, KmlSolverMatrixStore *store, const KmlSolverMatrixOption *basicOptions, const KmlScasolverMatrixOption *scaOptions);

参数

参数名

类型

描述

输入/输出

pMatrix

KmlScasolverMatrix **

矩阵句柄,pMatrix不可为空指针。

输入/输出

store

KmlSolverMatrixStore *

矩阵格式信息结构体,仅描述当前进程本地矩阵,不可为空指针,具体内容如4.3.3.10.1.1-表1所示。

输入

basicOptions

KmlSolverMatrixOption *

矩阵基础配置选项,不可为空指针,具体内容如4.3.3.10.1.1-表2所示。

输入

scaOptions

KmlScasolverMatrixOption *

矩阵分布式配置选项,所有进程保存的矩阵需保证能够组成完整矩阵且无重复部分,不可为空指针,具体内容如表1所示。

输入

表1 KmlScasolverMatrixOption结构体字段描述

字段名

类型

描述

fieldMask

uint64_t

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

globalNumRows

int64_t

全局矩阵的行数。如果未指定,则默认值与KmlSolverMatrixStore::nrows相同。

掩码位:KMLSS_MATRIX_OPTIONS_GLOBAL_NROWS

globalNumCols

int64_t

全局矩阵的列数。如果未指定,则默认值与KmlSolverMatrixStore::ncols相同。

掩码位:KMLSS_MATRIX_OPTIONS_GLOBAL_NCOLS

partition

KmlScadssMatrixPartition

全局矩阵在进程间的划分,具体内容如表2所示。

掩码位:KMLSS_MATRIX_OPTIONS_PARTITION

表2 KmlScadssMatrixPartition结构体字段描述

字段名

类型

描述

type

KmlScasolverMatrixPartitionType

矩阵在进程间的划分方式,有如下值。

  • KMLSS_MATRIX_PARTITION_ROW表示按行划分。
  • KMLSS_MATRIX_PARTITION_COL表示按列划分。
  • KMLSS_MATRIX_PARTITION_NZ表示按非零元素划分。

localBegin

int64_t

表示当前进程在全局矩阵中的偏移量,意义取决于划分方式type,具体如下。

  • KMLSS_MATRIX_PARTITION_ROW时表示第一个本进程矩阵行的全局行号。
  • KMLSS_MATRIX_PARTITION_COL时表示第一个本进程矩阵列的全局列号。
  • KMLSS_MATRIX_PARTITION_NZ时则忽略本参数。

返回值

返回值

类型

描述

KMLSS_NO_ERROR

int

正常执行。

KMLSS_INTERNAL_ERROR

int

内部错误。

KMLSS_NULL_ARGUMENT

int

pMatrix,store,basicOptions,scaOptions存在空参数。

依赖

#include "kml_scadss.h"