Parallel Meep
From AbInitio
Revision as of 19:08, 2 April 2006 (edit) Stevenj (Talk | contribs) (added) ← Previous diff |
Revision as of 19:12, 2 April 2006 (edit) Stevenj (Talk | contribs) Next diff → |
||
Line 1: | Line 1: | ||
{{Meep}} | {{Meep}} | ||
- | Meep supports distributed-memory parallelism using [[w:MPI|MPI]]. This allows it to scale up from small dual-processor machines to large parallel supercomputers, and to work on very large problems that may not even fit into the memory of system. We've run it using hundreds of processors; of course, your problem must be sufficiently large in order to benefit from many processors. | + | Meep supports distributed-memory parallelism using [[w:MPI|MPI]]. This allows it to scale up from small dual-processor machines to large parallel supercomputers, and to work on very large problems that may not even fit into the memory of one machine. We've run it using hundreds of processors; of course, your problem must be sufficiently large in order to benefit from many processors. |
==Installing Parallel Meep== | ==Installing Parallel Meep== |
Revision as of 19:12, 2 April 2006
Meep |
Download |
Release notes |
FAQ |
Meep manual |
Introduction |
Installation |
Tutorial |
Reference |
C++ Tutorial |
C++ Reference |
Acknowledgements |
License and Copyright |
Meep supports distributed-memory parallelism using MPI. This allows it to scale up from small dual-processor machines to large parallel supercomputers, and to work on very large problems that may not even fit into the memory of one machine. We've run it using hundreds of processors; of course, your problem must be sufficiently large in order to benefit from many processors.
Installing Parallel Meep
To install the parallel version of Meep, you must have a version of MPI installed on your system: see the installation manual.
We also strongly recommend installing the HDF5 with parallel I/O support if you are going to run with more than a few processors. (configure HDF5 with --enable-parallel
; you may also have to set the CC
environment variable to mpicc
.) Unfortunately, the parallel HDF5 library then does not work with serial code, so you have may have to choose to install either the serial or the parallel Meep, but not both.
If you don't install HDF5 with parallel I/O support, you can still do I/O from MPI — Meep has some hacks to let it write HDF5 files using serial I/O from multiple processes, one at a time. However, this does not scale very well to many processors. (We've also observed some MPI implementations to freeze under the strain of trying to write from many processes at once. YMMV).
Then you just configure
Meep --with-mpi
. The meep
executable is installed as meep-mpi
, so that you can have both the serial and parallel versions installed at the same time.
Using Parallel Meep
The parallel version of Meep is designed to operate completely transparently: you use the same .ctl
file as for the serial version, and the output is the same, but it is just faster (hopefully).
In order to run MPI programs, you typically have to use a command like mpirun
with an argument to say how many processes you want to use. (Consult your MPI documentation.) For example, with many popular MPI implementations, to run with 4 processes you would use something like:
mpirun -np 4 meep-mpi foo.ctl > foo.out
There is one important requirement: every MPI process must be able to read the foo.ctl
input file (or whatever your control file is called). On most systems, this is no problem, but if for some reason your MPI processes don't all have access to the local filesystem then you may need to make copies of your input file or something.