AWE’s Parallel Technology Support (PTS) team deals mainly with the development of applications which exploit the parallel nature of Massively Parallel Processing (MPP) machines.
MPP machines can be thought of as a large number of nodes connected together via a fast interconnecting network. Each of the individual nodes is self-contained, with its own cache and memory.
In AWE's new supercomputer, Redwood, the nodes are dual-core; that is each node comprises two identical processors, each with its own dedicated cache but sharing a memory controller and a common pool of memory within the node.
For applications to take full advantage of these platforms, well designed and well implemented parallel programs are required. The usual methodology for developing a parallel program is to split, or decompose, the problem into a number of smaller sections and distribute the work amongst the nodes/processors.
Once decomposed, for the majority of problems, nodes/processors require information from one another. Parallel programs need to transfer their data between these nodes by communicating the relevant information over the connecting network.
Specialised software libraries exist (for both distributed and shared memory) that contain a suite of functions which send, receive, gather, scatter and reduce messages. By carefully implementing calls to these libraries the correct data can be sent/received to and from the correct processors.
The PTS team is actively involved in addressing the challenges that arise from parallelising serial codes for both the distributed and shared memory architectures.
Sometimes particular problems are parallelised but also stand-alone parallel algorithms and libraries are developed which code developers can ‘plug’ into their existing codes to add extra parallel functionality.
The PTS team is actively involved in many other areas of the high performance computing field. Research is carried out on new and emerging technologies, benchmarking code for the latest hardware platforms as well as testing and evaluating a variety of software tools.