/** \page group The Group Library
The group library provides three mechanisms for parallel execution and
communication. These are:
- \ref messagepassing
- \ref distmemory
- \ref multithreading
\section messagepassing Message Passing
The MessageGrp class is the ancestor for classes that provide the passing
of messages between processes. There are three important specializations
of this class:
- ProcMessageGrp
- Provides a dummy MessageGrp for single processor
case.
- MPIMessageGrp
- Implements MessageGrp using the Message Passing
Interface (MPI) library.
- ShmMessageGrp
- Implements MessageGrp using SysV Interprocess
communication.
Due to the widespread acceptance of MPI and the large number of features
that it supports, the MessageGrp specialization may one day be eliminated.
\section distmemory Distributed Shared Memory
The MemoryGrp class is the ancestor for classes that permit access to the
memory in different processes, possible on difference machines. There are
two important specializations of this class:
- ProcMemoryGrp
- Provides a dummy MemoryGrp for single processor
case.
- MTMPIMemoryGrp
- This works reliably and efficiently, however,
requires POSIX threads and a thread-safe MPI
implementation.
- ARMCIMemoryGrp
- This message group uses the Aggregate Remote Copy
Interface (ARMCI). This exploits the RDMA
capabilities of interconnects such as Myrinet and
InfiniBand.
\section multithreading Multi-Threading
The ThreadGrp class is the ancestor of classes that provide
multiple-threads within a single address space. There are
two important specializations of this class:
- ProcThreadGrp
- Provides a dummy ThreadGrp for the single thread
case.
- PthreadThreadGrp
- This is a ThreadGrp that uses POSIX threads.
*/