Compile-time Loop Splitting for Distributed Memory ... - Stanford AI Lab
Compile-time Loop Splitting for Distributed Memory ... - Stanford AI Lab
Compile-time Loop Splitting for Distributed Memory ... - Stanford AI Lab
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Chapter 2<br />
Array Management in<br />
Multiprocessors<br />
Be<strong>for</strong>e describing the details of loop splitting, this thesis presents some background<br />
in<strong>for</strong>mation on multiprocessor array management. Specifically, the multiprocessors<br />
discussed here are distributed memory machines. This section helps to give perspective on<br />
both the complexities of array references and the benefits of loop splitting in reducing<br />
these expressions.<br />
2.1 Introduction<br />
Multiprocessors are designed with the hope that many computers can per<strong>for</strong>m the job of<br />
one computer in less <strong>time</strong>. Ideally hidden from the user, a program is run on a<br />
communication network of processor-memory pairs, as seen in Figure 2-1. However, to<br />
utilize more than one processor, a system of distributing the job among the processing<br />
elements must first be devised. In the most ideal case, a load-balanced partition – an<br />
equitable division of work among all processors – is found; and a multiprocessor terminates<br />
a program in Ia€ �� the <strong>time</strong> of a uniprocessor, where € is the number of processors.<br />
However, partitioning problems, data dependencies, processor communication, and<br />
12