Although the performance of mainframe general-purpose computers continues to
improve relentlessly, there continue to be applications that are beyond the reach of
the contemporary mainframe. There is a need for computers to solve mathematical
problems of physical processes, such as occur in disciplines including aerodynamics,
seismology, meteorology, and atomic, nuclear, and plasma physics.
Typically, these problems are characterized by the need for high precision and
a program that repetitively performs floating-point arithmetic operations on
large arrays of numbers. Most of these problems fall into the category known as
continuous-field simulation.In essence, a physical situation can be described by a
surface or region in three dimensions (e.g., the flow of air adjacent to the surface of
a rocket).This surface is approximated by a grid of points.A set of differential equa
tions defines the physical behavior of the surface at each point. The equations are
represented as an array of values and coefficients, and the solution involves re
peated arithmetic operations on the arrays of data.
Supercomputers were developed to handle these types of problems. These ma
chines are typically capable of billions of floating-point operations per second. In
contrast to mainframes, which are designed for multiprogramming and intensive I/O,
the supercomputer is optimized for the type of numerical calculation just described.
The supercomputer has limited use and, because of its price tag, a limited mar
ket. Comparatively few of these machines are operational, mostly at research
centers and some government agencies with scientific or engineering functions. As
with other areas of computer technology, there is a constant demand to increase the
performance of the supercomputer. Thus, the technology and performance of the
supercomputer continues to evolve.
There is another type of system that has been designed to address the need for
vector computation, referred to as the array processor.Although a supercomputer is
optimized for vector computation, it is a general-purpose computer, capable of han
dling scalar processing and general data processing tasks. Array processors do not
include scalar processing; they are configured as peripheral devices by both main
frame and minicomputer users to run the vectorized portions of programs.
Approaches to Vector Computation
The key to the design of a supercomputer or array processor is to recognize that the
main task is to perform arithmetic operations on arrays or vectors of floating-point
numbers. In a general-purpose computer, this will require iteration through each
element of the array. For example, consider two vectors (one-dimensional arrays) of
numbers,Aand B.We would like to add these and place the result in C. In the ex
ample of Figure 17.14, this requires six separate additions. How could we speed up
this computation? The answer is to introduce some form of parallelism.
Several approaches have been taken to achieving parallelism in vector computa
tion.We illustrate this with an example.Consider the vector multiplication
whereA,B,andCare matrices.The formula for each element of C