The study of low-energy electron-molecule collisions is of interest in many contexts, including aerospace applications, atmospheric studies, and the processing of materials using low-temperature plasmas (e.g., semiconductor fabrication). The Schwinger multichannel (SMC) method is an adaptation of Schwinger's variational principle for the scattering amplitude that makes it suitable for calculating low-energy electron-molecule collisions. The scattering probabilities are obtained by solving linear systems whose terms include a Green's function which has no analytic form and is evaluated by numerical quadrature. Generation of the quadrature data is compute-intensive, and the size of the data set is highly variable depending on the nature of the problem. The quadrature is formulated to be energy independent so it can be used to solve the scattering problem at many energies.
A production run is typically done in two execution phases. First, a compulsory read loads the problem definition and some initial matrices. All nodes participate in the calculation and storage of the requisite quadrature data set, with each node processing a different set of integrals. This phase is compute-intensive and is composed of a series of compute/write cycles with the write steps synchronized among the nodes. Memory limitations and the desire to checkpoint the quadrature data set for reuse in later executions prompt the writes during this phase. The second phase involves calculations that depend on the collision energy. In it, energy-dependent data structures are generated and combined with the reloaded quadrature data set to form the system of linear equations. Finally, the linear system matrices are written to disk for later solution on another machine.
PlatformsThis application runs on a number of platforms including the nCUBE, Touchstone Delta, Paragon and the Convex Exemplar.
Source CodeESCAT is a parallel implementation of the Schwinger Multichannel method written in C,
FORTRAN, and assembly language. As we noted earlier, a production run is typically done in
two phases. In the first phase, the initial data is read from three files. In the first
version of the code, pSMC, all nodes open and read initialization files. In
subsequent versions of the code (i.e., pSMCb, pSMCbp, and pSMCbp-A),
node 0 reads all initialization data and broadcast them to all nodes. Then, all nodes
repeatedly compute, synchronize, and write the quadrature data to the intermediate staging
files -- one file for each of the possible collision outcomes (i.e., channels) contained
in the test data. In the first version of the code (pSMC), all output is written
using Unix serial I/O calls. In version pSMCb, all output is written though node 0
only. In the subsequent version pSMCbp, to simplify reloading of the data in the
next phase, each node seeks to a calculated offset dependent on the node number,
iteration, and the Paragon PFS stripe size before writing the data. Intel's M_UNIX file mode is used for these
writes. In the latest version of the code (pSMCbp-A), a major performance
improvement is observed by using the M_ASYNC
file mode.
In the second execution phase, the part of the calculation that depends on the
collision energy is done. The previously written quadrature files are read by all the
nodes using the Intel M_RECORD
mode. The quadrature data are combined the energy-dependent data, and a system of linear
equations is assembled. After the final calculations, data is sent to node zero by all
other nodes and is written to three output files.
The electron scattering code was provided by Vincent McKoy and Carl Winstead at Caltech. Trace data was obtained using the Pablo trace capture library.
This research is supported in part by the National Science Foundation.