迁移步骤
通过适配层迁移
- 将#include "HYPRE.h"改为#include "HYPRE_kp.h",去除其余HYPRE相关头文件,若涉及ILU作为预条件子使用,需要去除HYPRE_ILUCreate、HYPRE_ILUDestroy和HYPRE_ILUSetMaxIter等相关预条件子创建及设置接口,BoomerAMG作为预条件子同理。
- 在编译选项中将原先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
- 添加环境变量。
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
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 |