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.

Performance Programming Papers

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.

The Performance Programming Glossary

Bowen and I tend to give rather exact definitions to some words that are sometimes used loosely. Here are some such definitions.

Performance Programming Course

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.