/** \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.
*/