HYPRE 的安装
下面介绍 Hypre 的安装步骤。
首 先 , 要 求 系 统 具 备 基 于 消 息 传 递 (MPI) 的 并 行 编 程 环 境 。 这 里 我 们 以 单 机
Linux(RedHat9.0+Mpich-1.2.6)系统为例,介绍 Hypre 的安装步骤。具体安装与机器的硬件和
软件环境有关。
(1)、从网址 http://www.llnl.gov/CASC/hypre/download/hypre-1.6.0.tar.gz 处下载 Hypre 最新
版本的源程序(以 Hypre-1.6.0 为例);
(2)、展开 Hypre 源程序:tar xzvf hypre-1.6.0.tar.gz
(3)、设置环境变量,根据不同的 shell,按不同的方式进行设置:
对 csh shell(如银河并行机):
setenv HYPRE_INSTALL_DIR <你想安装 hypre 的绝对路径>
mkdir ${HYPRE_INSTALL_DIR} (注:根据安装 hypre 的路径,可能需要以 root 身份执行);
对 Bourne shell(如,一般的 PC-Linux 系统):
HYPRE_INSTALL_DIR=<你想安装 hypre 的绝对路径>
export HYPRE_INSTALL_DIR
mkdir ${HYPRE_INSTALL_DIR}(注:根据安装 hypre 的路径,可能需要以 root 身份执行);
(4)、配置 Hypre(根据具体机器,为 Hypre 配置本机的软件和系统环境):
cd hypre-1.6.0/src
./configure \
--with-mpi-include=/include \ --with-mpi-lib-dirs=/lib \
--with-mpi-libs='' \ (注:如果选择,上述三个选项必须同
时用) --with-CC= \
--with-CXX= \
--with-F77=
举例 1:如果系统和软件环境为 Linux RedHat9.0 + mpich-1.2.6,则具
体配置可按如下进行:
./configure \
--with-mpi-include=/include \
--with-mpi-lib-dirs=< mpich 安装路径>/lib \
--with-mpi-libs=’mpich pmpich' \
--with-CC=gcc --with-CXX=g++ --with-F77=g77
举例 2:如果是 LAM MPI Linux,可按如下方式进行:
./configure \
--with-mpi-include=/include \
--with-mpi-lib-dirs=/lib \
--with-mpi-libs='mpi' \
--with-CC=gcc --with-CXX=g++ --with-F77=g77
举例 3:在银河并行机上安装:
sh/ ./configure \ --with-CC=mpicc --with-CXX=mpiCC --with-F77=f77
实际上,很多情况下,直接敲./configure 即可(这是最好了,祝你好运!)
(5)、编译 Hypre:
make
该命令在 hypre-1.6.0/src 目录下生成临时目录 hypre-1.6.0/src/hypre/。
(6)、将 Hypre 安装到指定路径:
make install (注:根据安装 hypre 的路径,可能需以 root 身份执行)
该命令将上一步中生成的 hypre-1.6.0/src/hypre/目录移到指定的安装目录中。
(7)、上述过程完成后,你可看到在安装目录下有两个子目录:
/include
/lib
如果你看到了这两个子目录,恭喜你!你已经在你的机器上成功地安装了 Hypre。
使用 HYPRE
1、一个 makefile 文件
#This Makefile made by JiangJun
DEBUG = -g
.SUFFIXES:.c .f90 .f
LIBS = -lm
F90C = /opt/mpich-mx-pgi/bin/mpif90
mycc = /opt/mpich-mx-pgi/bin/mpicc
C_COMPILE_FLAGS= -O -g
F77_COMPILE_FLAGS= -O -g
CINCLUDES= -I/opt/mpich-mx-pgi/include
CDEFS = -DHYPRE_TIMING
CFLAGS = ${C_COMPILE_FLAGS}\
-I/stg/s1p1/users/sxy/jiangjun/HYPRE/include\
-I. \
${CINCLUDES}\
${CDEFS}
FFLAGS = \
${F77_COMPILE_FLAGS}
MPILIBFLAGS = -L/opt/mpich-mx-pgi/lib
LIBFLAGS =
BLASLIBFLAGS = -lHYPRE_blas
-lm
-lmpich -lpmpich
IJ_LS_LFLAGS =\
-L/stg/s1p1/users/sxy/jiangjun/HYPRE/lib\
-lHYPRE_parcsr_ls\
-lHYPRE_DistributedMatrixPilutSolver \
-lHYPRE_ParaSails \
-lHYPRE_Euclid \
-lHYPRE_MatrixMatrix \
-lHYPRE_DistributedMatrix \
-lHYPRE_IJ_mv\
-lHYPRE_parcsr_mv\
-lHYPRE_seq_mv\
-lkrylov\
-lHYPRE_utilities\
${BLASLIBFLAGS} \
${MPILIBFLAGS} ${LIBFLAGS}
object=amg_cg_solver.o main.o
main:amg_cg_solver.o main.o
${F90C} -o $@ ${object} ${IJ_LS_LFLAGS}
##################################################################
# Generic rules
##################################################################
.c.o:
${mycc} -o $@ -c ${CFLAGS} $<
.f.o:
${F90C} -o $@ -c ${FFLAGS} $<
.f90.o:
${F90C} -o $@ -c ${FFLAGS} $<
clean :
-rm main
-rm *.o
-rm *.mod