All parallel work below the level of the ChemShell interpreter must be carried out within
a workgroup. Therefore if an external program is called for an energy and gradient evaluation
it must use MPI_COMM_WORKGROUP
, not MPI_COMM_WORLD
.
An interface function has been added to ChemShell
to pass the workgroup communicator to external programs.
We have modified the GAMESS-UK [7,8] QM package
and GULP [9] MM package to accept the MPI_COMM_WORKGROUP
communicator
from ChemShell.
These programs can be compiled as libraries into the ChemShell executable
so a simple function call is used to pass the information.
In the case of GAMESS-UK, a significant amount of computational time is spent
evaluating matrix eigenvectors and eigenvalues and it is therefore important to use
a parallel diagonaliser such as PeIGS [10] in order to make efficient
use of a massively-parallel platform. As the PeIGS library also contains MPI calls,
these were modified so that PeIGS could work in the task-farmed environment.
This involved replacing
instances of MPI_COMM_WORLD
with the workgroup communicator passed from
ChemShell.
The changes made to GULP have been incorporated into the released version and are available as of v3.5.3 or later. The changes to GAMESS-UK are in the development trunk code and will be incorporated into the next release.
In principle any parallel external program that has been interfaced to
ChemShell can be used in a task-farmed calculation
providing it can be modified to accept MPI_COMM_WORKGROUP
and use it instead of MPI_COMM_WORLD
. Alternatively the parallelism
at the ChemShell level could be exploited while only using a serial program
for energy and gradient evaluations.
In this case the task farm would be set up so that
there is only one processor per workgroup. No modifications would be required for the
external program but the potential for scaling up the calculation would obviously
be more limited.
Tom Keal 2010-06-29