[dune-pdelab] Parallel ALUGrid and gmshreader
Lukas Riedel
riedel-lukas at gmx.de
Thu Jul 3 11:38:28 CEST 2014
Dear Developers,
I built a working code in PDELab for parallel computation using YaspGrid and OpenMPI.
Now i want to use the gmshreader and the ALUgrid (simplex,2D) for the same code but i cannot find out how to initialize the ALUgrid in parallel mode.
OS: Mac OS X 10.9.3 Mavericks
GCC: gcc (MacPorts gcc49 4.9-20140416_2) 4.9.0 20140416 (prerelease)
G++: g++ (MacPorts gcc49 4.9-20140416_2) 4.9.0 20140416 (prerelease)
clang: clang version 3.5.0 (trunk 210448)
Target: x86_64-apple-darwin13.2.0
Thread model: posix
CC: Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.2.0
Thread model: posix
DUNE-modules: dune-common.............: version 2.3.0
dune-geometry...........: version 2.3.0
dune-grid...............: version 2.3.0
dune-istl...............: version 2.3.0
dune-localfunctions.....: version 2.3.0
dune-pdelab.............: version 2.0-dev
dune-typetree...........: version 2.3-dev
ALBERTA.................: version 2.0
ALUGrid.................: version 1.52 (parallel)
With YaspGrid, I wrote a „YaspPartition“ class and passed the MPI communicator:
int overlap=1;
const YaspPartition<2> yp;
Dune::YaspGrid<2> grid(helper.getCommunicator(),L,N,periodic,overlap,&yp);
Now, I use the gmshreader in the following way:
typedef Dune::ALUGrid<2,2,Dune::simplex,Dune::conforming> GridType;
Dune::shared_ptr<GridType> gridp(Dune::GmshReader<GridType>::read(meshfilename));
The check whether the created ALUGrid Type is parallel ( Dune::Capabilities::isParallel<GridType>::v ) returns false.
The output when executing $mpirun -n 2 <myProgram> reveals that two processes are executed, but both seem to calculate the whole problem on their own:
(every line doubled, of course)
parallel run on 2 process(es)
Reading 2d Gmsh grid...
version 2.2 Gmsh file detected
file contains 378 nodes
file contains 754 elements
number of real vertices = 378
number of boundary elements = 68
number of elements = 686
Created serial ALUGrid<2,2,simplex,conforming>
rank 0 number of DOF = 378
number of DOF 378
I built ALUGrid using METIS, parMETIS and OpenMPI
./configure CC=gcc CXX=g++ F77=gfortran —prefix=$HOME/opt/alugrid --with-metis=/usr/local --with-parmetis=/usr/local
CPPFLAGS="$CPPFLAGS `../dune-common*/bin/mpi-config --cflags --disable-cxx —mpicc=mpicc`" LDFLAGS="$LDFLAGS `../dune-common*/bin/mpi-config --libs --disable-cxx
--mpicc=mpicc`“ CXXFLAGS="-O3 -DNDEBUG“ CFLAGS="-O3 -DNDEBUG“
and DUNE successfully checks the serial and parallel usability of ALUGrid:
configure: searching for ALUGrid in /Users/lriedel/opt/alugrid...
checking ALUGrid version >= 1.52... yes (ALUGrid-1.52)
checking alugrid_serial.h usability... yes
checking alugrid_serial.h presence... yes
checking for alugrid_serial.h... yes
checking alugrid_parallel.h usability... yes
checking alugrid_parallel.h presence... yes
checking for alugrid_parallel.h… yes
How can i initialize a parallel ALUgrid using the gmshreader? How can i access/change the load balance of the grid?
Currently, i am using the following ISTL Solver Backend:
typedef Dune::PDELab::ISTLBackend_BCGS_AMG_SSOR<IGO> LS;
LS ls(gfs,5000,0,false,true);
As ALUgrid has no overlap but only ghosts, do i need to use a NOVLP solver backend then?
Are the ghosts assembled automatically?
Thank you for your help and best regards,
Lukas Riedel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.dune-project.org/pipermail/dune-pdelab/attachments/20140703/7316ec55/attachment.htm>
More information about the dune-pdelab
mailing list