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结构体描述:
字段名 |
类型 |
描述 |
|---|---|---|
globalNRows |
int64_t |
全局矩阵行数 |
globalNCols |
int64_t |
全局矩阵列数 |
localNRows |
int64_t |
本进程矩阵行数 |
localNCols |
int64_t |
本进程矩阵列数 |
type |
KmlAmgMatrixStoreType |
矩阵的类型,有如下值:
|
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_MATRIX_OPTIONS_VALUE_TYPE |
indexType |
KmlAmgIndexType |
矩阵索引类型:
掩码位:KMLAMG_MATRIX_OPTIONS_INDEX_TYPE |
comm |
MPI_Comm |
通信子 掩码位:KMLAMG_MATRIX_OPTIONS_COMM |
numThreads |
int32_t |
线程数 掩码位:KMLAMG_MATRIX_OPTIONS_NUM_THREADS |
使用暂不支持的参数会导致程序异常退出。
依赖
#include "amg4c.h"