The concurrent implementation of a large sequential code which is in
production on CRAY-type machines is a type of project
which is likely to become increasingly common as commercial parallel
machines proliferate and ``mainstream'' computer users are attracted by
their potential. Several lessons which emerge from the port of the SMC
code may prove useful to those contemplating similar projects. One is
the value of focusing on the concurrent implementation and, so far as
possible, avoiding or deferring minor improvements. If the original
code is a reasonably effective production tool, such tinkering is
unlikely to be of great enough benefit to justify the distraction from
the primary goal of achieving a working concurrent version. On the
other hand, major issues of structure and organization which bear
directly on the parallel conversion deserve very careful attention, and
should ideally be thought through before the actual conversion has
begun. In the SMC case, the principal such issue was how to implement
efficiently the transformation from primitive integrals to physical
matrix elements. The solution arrived at not only suggested that a
significant departure from the sequential code was warranted but also
determined the data decomposition. A further point worth mentioning is
that the conversion was greatly facilitated by the CP environment
which fostered collaboration between workers familiar with the original
code and its application, and workers adept at parallel programming
practice, and in which there was ready access both to smaller machines
for debugging runs and to larger production machines.
Finally, we believe that the emphasis on achieving a simple
communication strategy has justified itself in practice, not only in
efficiency but in the portability and reliability of the program.
At present the parallel SMC code is essentially in production mode, all capabilities of the original sequential code having been implemented and some optimization performed. Further optimization of the primitive-integral package is in progress, but the major focus in the near future is likely to be applications on the one hand and extending the capabilities of the parallel code on the other. We are particularly interested in modifying the program to allow the study of electron scattering from open-shell systems (i.e., those with unpaired electrons), with a view to obtaining cross sections for some of the more important polyatomic species found in materials-processing plasmas. With continued progress in parallel hardware, we are very optimistic about the prospects for theory to make a substantial contribution to our knowledge of electron-polyatomic collisions.