next up previous contents
Next: Portable Beowulfs Up: Justifying a Beowulf Previous: Justifying a Beowulf   Contents

Beowulf Description

A beowulf-class parallel supercomputer is a cost-effective way to acquire supercomputing resources to support a variety of kinds of numerical research, generally in physics, applied mathematics, or engineering but also in weather prediction, nuclear weapons design, quantum chemistry and in many other fields as well. Architecturally, a beowulf consists of some (variable) number of commodity, off the self (COTS) computers (called ``nodes'' or ``compute nodes'') to do the actual computations, one or more ``head nodes'' (COTS computers configured as user workstations and arranged to provide access and services to the nodes), and one or more interconnecting COTS networks so that the nodes can communicate with the head node(s) and each other. This collection of computers runs an open source operating system (generally linux, although there are a few exceptions) configured in such a way that the usage of all of these compute resources as a single entity performing parallel computations is facilitated.

The compute nodes are often (but not always) configured without any kind of monitor or keyboard; they are accessed only via the network. They generally will have a good deal of memory and relatively fast networking and central processing units (CPUs). They may or may not have local disk resources such as CD-ROM drives, hard disks, or floppies.

The head nodes will often have high-end graphics, large disk arrays, attached printers, scanners, or other peripherals and will provide shared access to disk space and peripherals to the sparsely equipped nodes. These head nodes will generally sit on desktops and can be viewed as the ``console(s)'' of the parallel supercomputer. They often function as visualization workstations, program development platforms and may provide network isolation functions to keep the supercomputing network secure and free from extraneous traffic.

The network plays an essential role in beowulf design. It allows work that is split up so that it can be executed in parallel on the compute nodes to be sent to those nodes (often from a session running on a head node). It is then used to provide data to those running tasks, and to allow those tasks to exchange information with tasks running on other nodes as required by the computation.

Some parallel computational tasks require a great deal of computation but not much communication. Beowulf design for these tasks will generally emphasize raw compute speed and large memory and spend relatively little on networking. Other tasks have a lot of communication and relatively little computation. Beowulf design for these tasks will generally emphasize the network; it is not unheard of to spend more on the networking being delivered to a node than is spent on the node itself.

Similarly, some computational tasks require that tasks be completed by the nodes in a very predictable, regular (``synchronous'') way - every node needs to complete a subtask at some particular time so that they can all communicate and go on to the next subtask. Program design for this sort of task will be much simpler if all the nodes are the same and their performance homogeneous and predictable. Other computational tasks just do chunks of work that are more or less independent of other chunks and can be completed at any time and in any order. In this case it is much less important that the nodes and network be identical.

Either way, the goal of beowulf design is to provide an aggregation of (individually) rather inexpensive compute power to apply to advanced numerical tasks. Unlike a ``dedicated function'' parallel supercomputer such as a Cray T3E or IBM SP3, a beowulf is rarely purchased all at once and follows a much different depreciation and component reuse cycle.

For example, nodes can be purchased and added at any time (provided that sufficient networking resources exist or are also added to permit the new nodes to be interconnected. Old nodes that are no longer sufficiently state of the art to form adequate compute nodes can be cycled out and, with the addition of a monitor and keyboard, often can function for years longer as perfectly adequate desktops. The same is true of network components and even head node components. A beowulf design is emminently recyclable.

A beowulf is therefore rarely bought all at once and then ``finished'' in the sense that a commercial single-chassis supercomputer is purchased all at once and then used as a unit until it is retired. Nodes are added, nodes are removed, nodes are replaced or repaired, and the ``supercomputer'' carries on. New nodes for a single beowulf are often funded from several sources over many years; the Duke Physics department's primary beowulf, ``brahma'' (see http://www.phy.duke.edu/brahma) has been in existence for five years across two or three generations of hardware.

Nevertheless, in all important ways a beowulf is just as much a real supercomputer as its commercial brethren, only much, much cheaper and much, much longer lived. In particular, as an identifiable (often named) network entity, it must generally be treated as capital equipment rather than as a mere aggregation of desktop workstations, regardless of where its components are actually physically located. Otherwise one's design and purchase process is heavily distorted by the need to pay indirect costs on individual nodes while those node costs in aggregate vastly exceed the capital equipment threshold.


next up previous contents
Next: Portable Beowulfs Up: Justifying a Beowulf Previous: Justifying a Beowulf   Contents
Robert G. Brown 2004-05-24