Minggu, 19 Desember 2010

Supercomputers

Supercomputers are high-performance computing devices that are generally used for numerical calculation, for the study of physical systems either through numerical simulation or the processing of scientific data. Initially, they were large, expensive, mainframe computers, which were usually owned by government research labs. By the end of the twentieth century, they were more often Networks of inexpensive small computers. The common element of all of these machines was their ability to perform high-speed floating-point arithmetic— binary arithmetic that approximates decimal numbers with a fixed number of bits—the basis of numerical computation.

Almost all the early electronic computers were called supercomputers or supercalculators. Two early machines, the Massachusetts Institute of Technology (MIT) Whirlwind (1951) and the International Business Machine (IBM) Stretch (1955) achieved their performance using innovative circuitry. The Whirlwind pioneered the use of magnetic core memory, while the Stretch used high-speed transistors. Though subsequent supercomputers used even more advanced electronics technology, most achieved their speed through parallelism, by performing multiple calculations simultaneously.

Numerical weather prediction, one of the Standard problems for supercomputers, illustrates the parallel nature of many scientific calculations. The basic analysis of the earth’s weather system, done in the 1920s, imposed a grid upon the surface the earth and developed a series of differential equations to describe how the weather changed at each point of the grid. The equations described such things as the absorption of solar energy, the dissipation of the wind, the movement of humidity, and the fluctuations in temperature. Though some values are passed from point to point, many of the calculations can be done in parallel. This can be best appreciated by comparing two points on opposite sides of the globe. As the weather in London has little connection to the weather in Tahiti, the calculations for the two locations can be done at the same time. Other kinds of problems that shared this kind of geometric parallelism include stress analyses of structures, the processing of graphical images, the simulation of fluid or airflow, and the simulation of nuclear explosions. This last problem was crucial to the evolution of supercomputers. Many supercomputers were developed for the U.S. Defense Department in the 1960s and 1970s. The U. S. nuclear research laboratories helped to test these machines, debug them, and create software for them.

Early attempts to exploit parallelism produced supercomputers called vector machines. Vector processors can perform the same instruction repeatedly on a large amount of data. These machines are often associated with the designer Seymour Cray. First employed by Sperry-Rand, he helped to found two supercomputer manufacturers: Control Data Corporation (CDC) and Cray Research. His first parallel machine was the CDC 6400, which was announced in 1964. It was a ‘‘look-ahead’’ machine—the elements of the machine could work autonomously and its control unit could execute instructions out of sequence. If it encountered an instruction that needed circuits that were currently in use, it would jump to the next instruction and try to execute it. He expanded this idea in his next two machines, the CDC 7600 and the Cray I.

The vector processor of the Cray I exploited parallelism within floating-point arithmetic. As floating-point numbers are recorded in scientific notation, the fundamental operations, such as addition, subtraction, multiplication, and division are more complicated than the arithmetic of integers. Floating-point addition has four separate steps and requires three separate additions or subtractions. Cray devised logic circuits to perform each step of a floating-point operation. He then arranged these circuits in logical assembly lines, similar in concept to the assembly lines of an automobile factory. The assembly line for addition had four stages, each corresponding to one of the steps. As data passed down these lines, they stopped at each stage to have part of the floating-point operation performed. Once the pipe was filled with data and was processing it, it would produce additions four times faster than a processor that did one complete floating-point addition at a time.

Vector processors were capable of great speeds. If all parts of the Cray I were operating, it would produce 133 million floating-point operations per second, or mega-FLOPS. Yet, the problems of achieving this speed illustrated the software problems for supercomputer designers. Unless a program made heavy use of the vector processor, the machine ran at a fraction of its top speed, an observation known as ‘‘Amdahl’s Law.’’ The vector hardware could be a thousand times faster than the main processor or even a million times faster, but if the program used it only 5 percent of the time, the supercomputer would run only 5 percent faster than a conventional machine because the supercomputer would always be waiting for the main processor to complete its work. As a consequence, programmers radically learned to rewrite their code in order to keep the vector processor fully occupied, a process known as ‘‘vectorization.’’ They commonly discovered that vectorized programs altered the order of basic operations and required substantially more memory to hold intermediate results. Vectorization could be a time-consuming process and difficulty to justify unless the program was run repeatedly. However, by the early 1980s, software developers had created optimizing FORTRAN (from ‘‘formula translation,’’ a computer language) compilers that automatically rewrote programs for a vector machine.

During the late 1980s, supercomputer research began to shift from large vector machines to networks of smaller, less expensive machines. These machines promised to be more cost effective, though computer scientists often discovered that these clusters or constellations or processors could be more difficult to program than vector machines. They experimented with different configurations of processors, the extent to which they shared common memory, and the way in which they were controlled. Some machines, such as the Burroughs Scientific Processor, used a single stream of instructions to control an array of processors that worked from a single memory. At the other extreme, the Cray X-MP had independent processors, each of which had large dedicated memories. Between the two, fell machines such as the Connection Machine. It consisted of a large number of processors, each of which had a small amount of independent memory. An important step in this work came in 1994 when a group of NASA Beowulf project. Beowulf machines could be assembled from commercial processors using standard network hardware. Few programmers could utilize the full power of these machines, but these were so inexpensive that many were able to use them. The original NASA Beowulf cost $40,000 and had the potential of computing one billion floating-point operations per second. With the advent of inexpensive supercomputers, these machines moved beyond the large government labs and into smaller research and engineering facilities. Some were used for the study of social science. A few were employed by business concerns, such as stock brokerages or graphic designers.

0 komentar:

Posting Komentar