Programs 6.13 and 6.14 sketch an FM
implementation of the parallel Fock matrix construction algorithm of
Section 2.8. Recall that in this algorithm,
P
computation tasks must be able to read and write two large distributed
data structures. This capability is achieved by encapsulating these
data structures in separate data tasks. Each computation task
repeatedly generates requests for data values and then performs
computation. The FM program implements computation and data tasks as
compute and data processes, respectively, and connects
these processes using a many-to-many communication structure, as
illustrated in Figure 6.10. This structure uses P
mergers to link PP outports ( To) with P
inports ( Ti). Each process is given an array of P
outports, one connected to each merger. In
Programs 6.13 and 6.14, P=128,
and 1024 data values are allocated to P data tasks in a
blocked fashion.
Figure 6.10: FM implementation of the Fock matrix problem, with P=3.
Each of the P compute processes has an array of P
outports connected via mergers with P data
processes.
For brevity, the FM programs presented here implement only an accumulate operation. A compute process wanting to accumulate a value to address addr sends a message containing an offset (the integer mod(addr,ND)) and the value to be accumulated (a real) on outport number addr/ND. Notice that the compute and data processes are similar in structure to the manager and worker of Program 6.5.
© Copyright 1995 by Ian Foster