hex is a sixteen-core (eight dual-core processors) AMD Opteron system, with 32 GB of RAM. The machine is a TYAN Transport VX50 with a four-socket TYAN Thunder K8QW (S4881) mainboard and an M4881 daughterboard supporting an additional four processors and their RAM. There are eight dual-core, 64-bit 2.0 GHz AMD Opteron 870 processors. Each CPU has two 2 GB RAM modules, for a total of 32 GB of RAM in the system. There is room for expansion up to 64 GB of RAM through the addition of two more 2 GB RAM modules per CPU.

Interprocess communication can be done using special message-passing software that implements protocols such as the Message-Passing Interface (MPI) or Parallel Virtual Machine (PVM) or by writing programs that include their own message-passing code.

What Does It Do, and How Does It Work?

hex is a shared-memory “ccNUMA” (cache-coherent, non-uniform memory access) multiprocessor computer system. In NUMA systems, RAM is organized in a hierarchical way so that some RAM is “closer” to a processor, and thus allows faster access, than other RAM. In our system, each processor actually has a bank of RAM that is physically connected to it.

Processors can access RAM connected to other processors, but at a slight speed penalty as access must be mediated by two or more processors communicating with each other across the system's bus. That penalty is, however, considerably smaller than the equivalent cost for a distributed-computing system that must use external (often network) hardware to communicate.

In all general-purpose processors today, going off chip to access memory (whether locally attached or on another processor) is slow compared to on-chip access. So modern processors “cache” the contents of memory in memory that is actually part of the processor.

In multiprocessor systems, caching can be especially useful because it can mask the longer delays from accessing RAM connected to other processors. But multiprocessor systems also face the risk of multiple processors having their own local caches of a memory location and having those caches become unsynchronized, or “inconsistent”. A “cache-coherent system” guarantees that all the caches stay more-or-less in sync.

As with Beowulf clusters, taking advantage of the parallel-processing abilities of the system requires the algorithms used in software running on the machine to be inherently parallelizable and, of course, requires your code to be written to support parallel communication between processors.

Using hex

Getting access to hex requires you to have a mathematics department Linux account and special permission to be added to the necessary Unix group to allow you to log into the system.

The Hex Appropriate-Use Policy section explains the usage restrictions and provides a place to download the necessary hex Account-Request Form.

Writing and Running Parallel Programs

More information about writing and running parallel programs is available in our parallel-software support section.