Parallel Meep

From AbInitio

(Difference between revisions)
Jump to: navigation, search
Revision as of 19:12, 2 April 2006 (edit)
Stevenj (Talk | contribs)

← Previous diff
Revision as of 19:13, 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 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.+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 at least 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:13, 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 at least 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.

Personal tools