---
title: 集群版
description: "通过适配层迁移"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/mg/kunpengaccel_12_0060.html
sourcePath: /source/zh/kunpenghpcs/hpckit/mg/kunpengaccel_12_0060.html
indexId: 4e4e001a7d550a21d6f3e21868f13c598b05e17c658f0575e62ce02d5f67589e58
---
# 集群版

#### 迁移步骤

通过适配层迁移

1. 将#include "HYPRE.h"改为#include "HYPRE_kp.h"，去除其余HYPRE相关头文件，若涉及ILU作为预条件子使用，需要去除HYPRE_ILUCreate、HYPRE_ILUDestroy和HYPRE_ILUSetMaxIter等相关预条件子创建及设置接口，BoomerAMG作为预条件子同理。
2. 通过加载HPCkit相关环境变量，设置HYPRE的头文件路径和KML适配层动态库路径，环境变量的具体加载方式参见《Kunpeng HPCKit 26.1.RC1 安装指南》(https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/instg/KunpengHPCKit_install_015.html)中“设置环境变量”章节，设置成功后重新编译应用

```
mpicc program.c  -lHYPRE_kp -lkscasolver -lkservice -lklapack -lkm -lm
```


*实际应用场景中往往需要更加灵活的调用，可参考适配层的内部实现：hypre_kunpeng.c(https://gitee.com/kunpengcompute/hpckit/blob/master/build/kml/kml_scasolver_adapter/src/hypre_kunpeng.c)


**表1 当前已适配接口**

| HYPRE接口 |
| --- |
| HYPRE\_Init |
| HYPRE\_IJMatrixCreate |
| HYPRE\_IJMatrixSetObjectType |
| HYPRE\_IJMatrixInitialize |
| HYPRE\_IJMatrixSetValues |
| HYPRE\_IJMatrixAssemble |
| HYPRE\_IJMatrixGetObject |
| HYPRE\_IJVectorCreate |
| HYPRE\_IJVectorSetObjectType |
| HYPRE\_IJVectorInitialize |
| HYPRE\_IJVectorSetValues |
| HYPRE\_IJVectorAssemble |
| HYPRE\_IJVectorGetObject |
| HYPRE\_ParCSRBiCGSTABCreate |
| HYPRE\_ParCSRBiCGSTABSetTol |
| HYPRE\_ParCSRBiCGSTABSetMaxIter |
| HYPRE\_ParCSRBiCGSTABSetup |
| HYPRE\_ParCSRBiCGSTABSolve |
| HYPRE\_ParCSRBiCGSTABGetNumIterations |
| HYPRE\_ParCSRBiCGSTABGetFinalRelativeResidualNorm |
| HYPRE\_ParCSRBiCGSTABDestroy |
| HYPRE\_ParCSRBiCGSTABSetPrecond |
| HYPRE\_ParCSRGMRESCreate |
| HYPRE\_ParCSRGMRESSetTol |
| HYPRE\_ParCSRGMRESSetMaxIter |
| HYPRE\_ParCSRGMRESSetup |
| HYPRE\_ParCSRGMRESSolve |
| HYPRE\_ParCSRGMRESGetNumIterations |
| HYPRE\_ParCSRGMRESGetFinalRelativeResidualNorm |
| HYPRE\_ParCSRGMRESDestroy |
| HYPRE\_ParCSRGMRESSetPrecond |
| HYPRE\_IJMatrixDestroy |
| HYPRE\_IJVectorDestroy |
| HYPRE\_Finalize |
