悲催的科学匠人 - 冷水's blog

在国家超级计算中心的天河服务器上编译OpenFOAM2.1.0

OpenFOAM默认使用gcc和openmpi,但是天河上是Intel编译器和特制的mpich。

按照OpenFOAM源代码编译说明,设置好环境变量后,需要做如下修改

在$OPENFOAM/OpenFOAM-2.1.0/etc/bashrc中设置

66行: export WM_COMPILER=Icc

84行:export WM_MPLIB=MPI

 

关键是对MPI的具体设置,在$OPENFOAM/OpenFOAM-2.1.0/etc/config/settings.sh中找到585行左右有关对MPI的设置

486     export FOAM_MPI=mpi
487     export MPI_ARCH_PATH=/usr/local/mpi
491     export FOAM_MPI_LIBBIN=$FOAM_LIBBIN/mpi

 

然后是针对本地的mpi添加一个编译选项文件,路径是 wmake/rules/General/linux64Icc/mplibMPI,内容为

PFLAGS     = -fPIC
PINC       = -I/usr/local/mpi/include
PLIBS      = -L/usr/local/glex/lib -L/usr/local/mpi/lib -lmpichcxx -lmpich -lopa -lpmi  -lglex -lpthread -lrt -luuid -lrt

 

于是就ok了。只要执行 source ~/.bashrc后,环境变量就更新了,可以进行wmake了

最后在编译 src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.C时会出现一点错误,只要将extern "C"{}里面的 #include "mpi.h"移到外面来就可以了。

 

OpenFoam十分巨大,编译要半天左右,因此可以利用其自带的并行编译功能来加速。详细的参考网站上有关

wmakeScheduler for faster compilation 的说明就行了。我是设置了8个进程来加速,但是往往用不上,不能指望8倍加速。




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee