External programs

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