鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

KmlAmgMatrixCreate

创建矩阵句柄。

创建矩阵时是浅拷贝,用户需要保证KmlAmgMatrixCreate创建的矩阵在求解结束之前不释放参数store指定的内存。

接口定义

C Interface:

KmlAmgStatus KmlAmgMatrixCreate(KmlAmgMatrixH* matrix, KmlAmgMatrixStore* store, const KmlAmgMatrixOptions* options);

参数

参数名

类型

描述

输入/输出

matrix

KmlAmgMatrixH*

矩阵句柄,matrix不可为空指针

输入/输出

store

KmlAmgMatrixStore*

矩阵的格式与数据信息结构体

输入

options

KmlAmgMatrixOptions*

矩阵配置选项

输入

返回值

返回值

类型

描述

KMLAMG_SUCCESS

int

运行成功

KMLAMG_ERR_INVALID_PARAM

int

参数无效

KMLAMG_ERR_UNSUPPORTED

int

功能暂不支持

KMLAMG_ERR_NULL_POINTER

int

空指针

KMLAMG_ERR_NO_REQUIRED_FIELD

int

没有设置必需字段

KMLAMG_ERR_NO_MEMORY

int

内存分配失败

KMLAMG_ERR_UNKNOWN_TYPE

int

未知的类型

KMLAMG_ERR_UNEXPECTED_CALL_ORDER

int

预期之外的调用顺序

KMLAMG_ERR_NO_RESOURCE

int

资源未就绪

KMLAMG_ERR_INCONSISTENT

int

不同阶段传递的信息不一致

KMLAMG_ERR_UNKNOWN_ERROR

int

未知错误

结构体说明

KmlAmgMatrixStore结构体描述:

表1 KmlAmgMatrixStore结构体

字段名

类型

描述

globalNRows

int64_t

全局矩阵行数

globalNCols

int64_t

全局矩阵列数

localNRows

int64_t

本进程矩阵行数

localNCols

int64_t

本进程矩阵列数

type

KmlAmgMatrixStoreType

矩阵的类型,有如下值:

  • KMLAMG_MATRIX_STORE_CSR表示CSR格式的矩阵
  • KMLAMG_MATRIX_STORE_CSC表示CSC格式的矩阵(暂不支持)
  • KMLAMG_MATRIX_STORE_COO表示COO格式的矩阵(暂不支持)
  • KMLAMG_MATRIX_STORE_DENSE_ROW_MAJOR表示行主序矩阵(目前只支持列数为1,即向量)
  • KMLAMG_MATRIX_STORE_DENSE_COL_MAJOR表示列主序矩阵(暂不支持)

partitionType

KmlAmgMatrixPartitionType

矩阵切分的类型,有如下值:

KMLAMG_MATRIX_PARTITION_ROW表示按行切分

KMLAMG_MATRIX_PARTITION_COL表示按列切分(暂不支持)

KMLAMG_MATRIX_PARTITION_NZ表示按非零元切分(暂不支持)

isAvgPart

int8_t

矩阵是否是平均切分,0表示不平均,非0值表示平均切分

localBegin

int64_t

当前进程矩阵的起始行/列索引

dense

KmlAmgMatrixStoreDense

type为KMLAMG_MATRIX_STORE_DENSE_ROW_MAJOR或KMLAMG_MATRIX_STORE_DENSE_COL_MAJOR时,该字段有效,存储矩阵的值

csr

KmlAmgMatrixStoreCSR

type为KMLAMG_MATRIX_STORE_CSR时该字段生效,存储CSR矩阵的三元组信息

csc

KmlAmgMatrixStoreCSC

type为KMLAMG_MATRIX_STORE_CSC时该字段生效,存储CSC矩阵的三元组信息

coo

KmlAmgMatrixStoreCOO

type为KMLAMG_MATRIX_STORE_COO时该字段生效,存储COO矩阵的三元组信息

KmlAmgMatrixOptions结构体描述:

字段名

类型

描述

fieldMask

uint64_t

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

valueType

KmlAmgValueType

矩阵数值类型,有如下值:

  • KMLAMG_VALUE_FP32表示float
  • KMLAMG_VALUE_FP64表示double

掩码位:KMLAMG_MATRIX_OPTIONS_VALUE_TYPE

indexType

KmlAmgIndexType

矩阵索引类型:

  • KMLAMG_INDEX_INT32表示int32_t
  • KMLAMG_INDEX_INT64表示int64_t(暂不支持)

掩码位:KMLAMG_MATRIX_OPTIONS_INDEX_TYPE

comm

MPI_Comm

通信子

掩码位:KMLAMG_MATRIX_OPTIONS_COMM

numThreads

int32_t

线程数

掩码位:KMLAMG_MATRIX_OPTIONS_NUM_THREADS

使用暂不支持的参数会导致程序异常退出。

依赖

#include "amg4c.h"