Date: Tue, 14 Jan 1997 23:47:04 GMT
Server: NCSA/1.4.2
Content-type: text/html
Last-modified: Thu, 31 Oct 1996 17:36:24 GMT
Content-length: 2678
Performance Programming
Performance Programming
Performance programming seeks to improve performance
beyond what is achieved by programming an algorithm in the
most expedient manner. The goal is that each processing
element be kept as busy as possible doing useful work. This
entails satisfying four requirements: breaking problems into
independent subproblems that can be executed concurrently,
distributing these subproblems appropriately among the processing
elements, making sure that the necessary data is close to its
processing element, and overlapping communication with computation
where possible. To attain high performance, these requirements must
be satisfied whether one views "processing elements" as
stages of an arithmetic or vector pipeline, functional units of a CPU,
processors of a tightly coupled shared-memory multiprocessor, nodes of
a distributed-memory supercomputer, or heterogeneous computers on a
network.
Performance programming can require weeks of work even for a small
program. This effort can be justified for some frequently-executed
kernels and computations for which there is a large premium for fast
answers. Performance programming techniques are applicable, but rarely
appropriate, for sequential programs. They are often of paramount
importance on parallel supercomputers.
A bibliography of papers on topics related to performance
programming by Bowen Alpern, Larry Carter, and others.
Preprints of most of these papers are provided.
Bowen and I tend to give rather exact definitions to some words that
are sometimes used loosely. Here are some such definitions.
An outline of a graduate course for Columbia University's Computer
Science Department taught by Bowen Alpern in the Fall of 1994 together
with slides from the course, is available here.
(This material was used to produce slides and
overlays for presentation in this class. It was not intended to be
viewed form a PostScript previewer. With some previewers, it may be
necessary to reduce the viewer's magnification in order to see entire
slides.)
I taught a
course on similar material at UCSD in the Fall of 1995.