hex
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.



