---
title: KmlSolverMatrixCreate
description: "创建矩阵操作句柄。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/240RC1/accel/kunpengaccel_kml_16_0764.html
sourcePath: /source/zh/kunpengboostkithistory/240RC1/accel/kunpengaccel_kml_16_0764.html
indexId: 2aed351b5292bb54c8e04bdea936ece6b6051e6f8ca4ffa4c41eb0b0923c0bcd76
---
# KmlSolverMatrixCreate

创建矩阵操作句柄。

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


#### 接口定义

C Interface：

int KmlSolverMatrixCreate(KmlSolverMatrix **pMatrix, const KmlSolverMatrixStore *store, const KmlSolverMatrixOption *matOption);


#### 参数

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| pMatrix | KmlSolverMatrix \*\* | 矩阵句柄，pMatrix不可为空指针。 | 输入/输出 |
| store | KmlSolverMatrixStore \* | 矩阵格式信息结构体，不可为空指针，具体内容如表1所示。 | 输入 |
| matOption | KmlSolverMatrixOption \* | 矩阵配置选项，不可为空指针，具体内容如表2所示。 | 输入 |


**表1 KmlSolverMatrixStore结构体字段描述**

| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| valueType | KmlSolverValueType | 矩阵数值类型，有如下值。 KMLSS\_VALUE\_FP32表示float。 KMLSS\_VALUE\_FP64表示double。 KMLSS\_VALUE\_FP32C表示complex float。 KMLSS\_VALUE\_FP64C表示complex double。 |
| indexType | KmlSolverIndexType | 矩阵坐标索引类型。 KMLSS\_INDEX\_INT32表示int32\_t。 KMLSS\_INDEX\_INT64表示int64\_t。 |
| nRow | int64\_t | 矩阵行数。 |
| nCol | int64\_t | 矩阵列数。 |
| format | KmlSolverMatrixStoreFormat | 矩阵存储格式，有如下值。 KMLSS\_MATRIX\_STORE\_CSR表示CSR格式。 KMLSS\_MATRIX\_STORE\_CSR\_L表示CSR格式，只有下三角部分。 KMLSS\_MATRIX\_STORE\_CSR\_U表示CSR格式，只有上三角部分。 KMLSS\_MATRIX\_STORE\_CSC表示CSC格式。 KMLSS\_MATRIX\_STORE\_CSC\_L表示CSC格式，只有下三角部分。 KMLSS\_MATRIX\_STORE\_CSC\_U表示CSC格式，只有上三角部分。 KMLSS\_MATRIX\_STORE\_COO表示COO格式。 KMLSS\_MATRIX\_STORE\_COO\_L表示COO格式，只有下三角部分。 KMLSS\_MATRIX\_STORE\_COO\_U表示COO格式，只有上三角部分。 KMLSS\_MATRIX\_STORE\_DENSE\_ROW\_MAJOR表示行主序稠密存储。 KMLSS\_MATRIX\_STORE\_DENSE\_COL\_MAJOR表示列主序稠密存储。 |
| csr | KmlSolverMatrixStoreCSR 该类型字段描述如表3所示。 | format为KMLSS\_MATRIX\_STORE\_CSR、KMLSS\_MATRIX\_STORE\_CSR\_L或KMLSS\_MATRIX\_STORE\_CSR\_U时，该字段有效。 |
| csc | KmlSolverMatrixStoreCSC 该类型字段描述如表4所示。 | format为KMLSS\_MATRIX\_STORE\_CSC、KMLSS\_MATRIX\_STORE\_CSC\_L或KMLSS\_MATRIX\_STORE\_CSC\_U时，该字段有效。 |
| coo | KmlSolverMatrixStoreCOO 该类型字段描述如表5所示。 | format为KMLSS\_MATRIX\_STORE\_COO、KMLSS\_MATRIX\_STORE\_COO\_L或KMLSS\_MATRIX\_STORE\_COO\_U时，该字段有效。 |
| dense | KmlSolverMatrixStoreDense 该类型字段描述如表6所示。 | format为KMLSS\_MATRIX\_STORE\_DENSE\_ROW\_MAJOR或KMLSS\_MATRIX\_STORE\_DENSE\_COL\_MAJOR时，该字段有效。 |


**表2 KmlSolverMatrixOption结构体字段描述**

| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| fieldMask | uint64\_t | 配置生效的字段掩码。非0的位代表配置对应字段指定的值，0的位代表使用默认值，可配置的掩码位见具体字段的说明。 |
| type | KmlSolverMatrixType | 指定矩阵类型，有如下值。 KMLSS\_MATRIX\_GEN表示一般矩阵，默认选项。 KMLSS\_MATRIX\_STRUCT\_SYM表示结构对称矩阵。 KMLSS\_MATRIX\_SYM表示对称矩阵。 KMLSS\_MATRIX\_HER表示hermitian矩阵。 KMLSS\_MATRIX\_SPD表示对称正定矩阵。 KMLSS\_MATRIX\_HPD表示hermitian正定矩阵。 掩码位：KMLSS\_MATRIX\_OPTION\_TYPE |


**表3 KmlSolverMatrixStoreCSR结构体字段描述**

| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| value | void \* | 非零元数值数组，大小为非零元个数。 |
| rowOffset | void \* | 行偏移数组，大小为行数加1。 |
| colIndex | void \* | 列坐标数组，大小为非零元个数。 |


**表4 KmlSolverMatrixStoreCSC结构体字段描述**

| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| value | void \* | 非零元数值数组，大小为非零元个数。 |
| rowIndex | void \* | 行坐标数组，大小为非零元个数。 |
| colOffset | void \* | 列偏移数组，大小为行数加1。 |


**表5 KmlSolverMatrixStoreCOO结构体字段描述**

| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| value | void \* | 非零元数值数组，大小为非零元个数。 |
| rowId | void \* | 行坐标数组，大小为非零元个数。 |
| colId | void \* | 列坐标数组，大小为非零元个数。 |
| nnz | int64\_t | 非零元个数。 |


**表6 KmlSolverMatrixStoreDense结构体字段描述**

| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| value | void \* | 矩阵数值数组，大小为行数乘以列数。 |
| ld | int64\_t | 主维度跨度。若为行主序，则ld为保存每一行所需要的数组长度，若为列主序，则ld表示保存每一列所需要的数组长度。 |


#### 返回值

| 返回值 | 类型 | 描述 |
| --- | --- | --- |
| KMLSS\_NO\_ERROR | int | 正常执行。 |
| KMLSS\_INTERNAL\_ERROR | int | 内部错误。 |
| KMLSS\_NULL\_ARGUMENT | int | pMatrix，store，matOption存在空参数。 |


#### 依赖

#include "kml_solver.h"
