---
title: KmlDss(Spd/Hpd)Init?I
description: "初始化数据结构，并将用户提供的系数矩阵关联到求解系统中，初始化LLT\LLH方法时使用上三角的CSR格式。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_0881.html
sourcePath: /source/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_0881.html
indexId: 576297e49437b65830185a31c64b09efec1a077002492ed0b2f784a42ad42fac61
---
# KmlDss(Spd/Hpd)Init?I

初始化数据结构，并将用户提供的系数矩阵关联到求解系统中，初始化LLT\LLH方法时使用上三角的CSR格式。

#### 接口定义

C Interface：

int KmlDssSpdInitSI(KmlSolverTask **pHandle, int n, float *a, int *ja, int *ia);

int KmlDssSpdInitDI(KmlSolverTask **pHandle, int n, double *a, int *ja, int *ia);

int KmlDssHpdInitCI(KmlSolverTask **pHandle, int n, kml_complex_float *a, int *ja, int *ia);

int KmlDssHpdInitZI(KmlSolverTask **pHandle, int n, kml_complex_double *a, int *ja, int *ia);


#### 参数

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| pHandle | KmlSolverTask \*\* | 求解器句柄，pHandle不可为空指针。 | 输出 |
| n | int | n为矩阵A的维度。 | 输入 |
| a | 在KmlDssSpdInitSI中为float \*。 在KmlDssSpdInitDI中为double \*。 在KmlDssHpdInitCI中为kml\_complex\_float \*。 在KmlDssHpdInitZI中为kml\_complex\_double \*。 | a为维度为非零元素的个数的数组，a[i]为第i个非零元的值。该数组的生命周期与pHandle相同。 | 输入 |
| ja | int | ja为维度为非零元素的个数的数组，ja[i]为第i个非零元的列号。该数组的生命周期与pHandle相同。 | 输入 |
| ia | int | ia为n+1维数组，ia[i]为第i行第一个非零元在所有非零元中的索引。该数组的生命周期与pHandle相同。 | 输入 |


#### 返回值

| 返回值 | 类型 | 描述 |
| --- | --- | --- |
| KMLSS\_NO\_ERROR | int | 正常执行。 |
| KMLSS\_NULL\_ARGUMENT | int | pHandle，a，ja，ia中有空指针。 |
| KMLSS\_BAD\_N | int | 矩阵维数输入值小于等于0。 |
| KMLSS\_NO\_MEMORY | int | 内存开辟失败。 |


#### 依赖

#include "kml_dss.h"或#include "kml_solver.h"


#### 示例

C Interface：

```
int n = 2;
int ia[3] = {0,2,4};
int ja[4] = {0,1,0,1};
double a[4] = {2,1,1,2};
KmlSolverTask *handle;
int ierr = KmlDssSpdInitDI(&handle, n, a, ja, ia);
if (ierr != 0) {
printf("\nERROR in KmlDssSpdInitDI: %d", ierr);
}
```
