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

迁移步骤

通过适配层迁移

  1. 将#include "HYPRE.h"改为#include "HYPRE_kp.h",去除其余HYPRE相关头文件,若涉及ILU作为预条件子使用,需要去除HYPRE_ILUCreate、HYPRE_ILUDestroy和HYPRE_ILUSetMaxIter等相关预条件子创建及设置接口,BoomerAMG作为预条件子同理。
  2. 在编译选项中将原先petsc的头文件路径和动态库路径修改为KML适配层的对应路径,并且重新编译应用,/PATH_TO_KML_INCLUDE为KML头文件路径,/PATH_TO_KML_ADAPTER为KML求解器适配器安装路径,/PATH_TO_KSCASOLVER为kscasolver安装路径,/PATH_TO_KBLAS为kblas安装路径,/PATH_TO_KM 为km安装路径
    mpicc program.c -I /PATH_TO_KML_INCLUDE -L /PATH_TO_KML_ADAPTER -lHYPRE -L /PATH_TO_KSCASOLVER -lkscasolver -lkservice -lklapack_full -L /PATH_TO_KBLAS -lkblas -L /PATH_TO_KM -lkm -lm

    示例:

    mpicc program.c -I ~/HPCKit/latest/kml/gcc/include -L ~/HPCKit/latest/kml/gcc/lib/noarch -lHYPRE -L ~/HPCKit/latest/kml/gcc/lib/neon -lkscasolver -lkservice -lklapack_full -L ~/HPCKit/latest/kml/gcc/lib/neon/kblas/multi -lkblas -L ~/HPCKit/latest/kml/gcc/lib/noarch -lkm -lm
  3. 添加环境变量。
    export LD_LIBRARY_PATH=/PATH_TO_KML_ADAPTER:/PATH_TO_KSCASOLVER:/PATH_TO_KBLAS:$LD_LIBRARY_PATH

    示例:

    export LD_LIBRARY_PATH=~/HPCKit/latest/kml/gcc/lib/noarch:~/HPCKit/latest/kml/gcc/lib/neon:~/HPCKit/latest/kml/gcc/lib/neon/kblas/multi:$LD_LIBRARY_PATH
表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