原文地址链接:http://blog.sina.com.cn/s/blog_6c3a275f0100ymk4.html,个人收藏方便查看

1 编译安装 MPICH2

MPICH是MPI标准的一种最重要的实现,MPI是为统一不同的MPP产家的消息传递API而制订的工业标准。MPI是一个库,而不是一门语言。

$tar -zxvf mpich2-1.1.1p1.tar.gz

**到MPICH官方网站下载源代码包,解压到$ WM_THIRDPARTY_DIR

$./configure --prefix=$WM_THIRDPARTY_DIR/platforms/linux64Gcc/mpich2-1.1.1p1

**设置安装目录

$make

**编译

$make install

**安装

$which mpd

$which mpicc

$which mpiexec

$which mpirun

**测试环境变量设置

#gedit mpd.hosts

**写入节点名称集合文件/$HOME/mpd.hosts

文件内容如下:

chess_001

chess_002

$mpdtrace

**查看启动几台机器:

$mpdallexit

chess_001

chess_002

**退出

$mpdboot -n 2 -f mpd.hosts

**运行集群系统

参数-n 2指定了要启动的机器个数,-f mpd.hosts指定了通过mpd.hosts运行。

测试运行MPICH的圆周率的程序

在软件的安装包里有圆周率计算的原代码icpi.c,先编译成可执行文件。

mpicc examples/icpi.c -o icp1

**编译程序,生成icp1

mpiexec -l –n 8 ./cpi1

**执行程序

   参数-l指定查看线程,-n 8指定了要启动的机器个数。./cpi1绝对路径执行。

2 配置OpenFoam环境变量

cd $WM_PROJECT_DIR/etc/bashrc

: ${WM_MPLIB:=SYSTEMOPENMPI}; export WM_MPLIB

**将原来系统中默认的并行库OPENMPI修改成MPICH,OpenFOAM-1.7.1中ThirdParty中自带的OpenMPI-1.4.1在RHEL系统上实验一直有MPI_INIT的错误无法解决,无法用多节点并行计算。

3 编译Pstream

根据OpenFOAM WIKI 上提供的介绍,所有求解器如果要并行数据交换都要使用Pstream库。

cd $WM_PROJECT_DIR/src/Pstream

./Allwmake

**编译生成libPstream.so

4 编译Scotch

cd $WM_THIRDPARTY_DIR/scotch_5.1/src

./make

**编译生成libscotchmetis.so。

5并行计算过程

1)      在需要并行求解的例子目录下面创建decomposeParDict文件,对其中包含的内容进行设置。

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

numberOfSubdomains 4;    //需要的并行处理器的个数;

method          simple;  //分割数据的方法;

simpleCoeffs

{

    n              ( 2 2 1 );

    delta           0.001;

}

 

hierarchicalCoeffs

{

    n               ( 1 1 1 );

    delta           0.001;

    order           xyz;

}

 

metisCoeffs

{

    processorWeights ( 1 1 1 1 );

}

 

manualCoeffs

{

    dataFile        "";

}

 

distributed     no;

roots           ( );

注:分割数据的方法,包括simple(按照xyz的顺序,对各个方向的分块数进行设定),hierarchical(对各个方向的分块数进行设定,各方向的顺序可以更改),metis(按照各个处理器需要分配的比重进行分配),manual(手动进行人工分配,需包含分配的文件);分散后的数据是否需要分配在不同的磁盘,如果需要则应该写明分配磁盘的路径。

2) 执行分散命令,如decomposePar –case case1

3) 执行并行运算命令,其格式为:mpiexec -machine< machinefile> -np< nProcs>< foamExec>< otherArgs> > log&

4) 对计算后的结果进行重组,如reconstructPar –case case1

6第一个并行算例

OpenFOAM -1.7.1 中自带的并行计算的算例位于

~/OpenFOAM/OpenFOAM-2.0.0/tutorials/multiphase/interFoam/laminar/damBreak

gedit machinefile

**编辑machinefile

chess_001:8

chess_002:8

**指定每个节点,几个线程

mpdallexit

**退出所有节点

mpdboot -n 2 -f mpd.hosts

** 启动集群系统,注意这个命令不能重复执行

mpdtrace

**计算之前检查启动了几台节点

通过下面步骤运行interFoam

cd 0

mv alpha1.org alpha

cd ..

blockMesh

setFields

decomposePar

mpiexec –machinefile machinefile 16 interFoam 

 posted on 2017-08-20 10:59  PHD记录  阅读(1341)  评论(0)    收藏  举报