GPU Computing

Infrastructure for GPU based algorithmic and parallel workloads.

What is GPU computing?

GPU (graphical processing units) is a methodology for high-performance computing that uses graphics processing units to crunch data. The characteristics of graphics algorithms that have enabled the development of extremely high-performance special purpose graphics processors show up in other HPC algorithms. This same special-purpose hardware can be put to use accelerating those algorithms as well.

What applications work best with GPUs and why?

Algorithms well-suited to GPU implementation are those that exhibit two properties: they are data parallel and throughput intensive. Data parallel means that a processor can execute the operation on different data elements simultaneously. Throughput intensive means that the algorithm is going to process lots of data elements, so there will be plenty to operate on in parallel. Taking advantage of these two properties, GPUs achieve extreme performance by incorporating lots (hundreds) of relatively simple processing units to operate on many data elements simultaneously.

How is a GPU different from a CPU?

GPU properties lead to a very different processor architecture from traditional CPUs. CPUs devote a lot of resources (primarily chip area) to make single streams of instructions run fast, including caching to hide memory latency and complex instruction stream processing (pipelining, out-of-order execution and speculative execution). GPUs, on the other hand, use the chip area for hundreds of individual processing elements that execute a single instruction stream on many data elements simultaneously. Memory latency is hidden by very fast context switching; when a memory fetch is issued while processing one subset of data elements, that subset is set aside in favour of another subset that is not waiting on a memory reference.

What advantages do GPUs offer?

GPUs can run certain algorithms anywhere from 10 to 100 or more times faster than CPUs—a huge advantage. Currently, Nvidia are able to offer single GPU cards which house over 4352 single CUDA (Compute Unified Device Architecture) cores with the latest 20 Nvidia series cards.

Are there any disadvantages of GPU?

There are currently two main disadvantages: 1) Gaining this speedup requires that algorithms are coded to reflect the GPU architecture, and programming for the GPU differs significantly from traditional CPUs. 2) Incorporating GPU hardware into systems adds expense in terms of power consumption, heat production, and cost. Some job mixes may be served more economically by systems that maximise the number of CPUs that can be brought to bear. Many suitable applications have been now been written however and there are an number of on-going housing and power modifications helping to minimise the running expense.

How is the field of advanced computing being impacted by GPU technology?

GPU computing is making a significant impact on high-performance computing in a wide range of application domains. Widely used HPC codes in areas including weather forecasting, molecular dynamics, and fluid-flow are being updated to incorporate GPU acceleration. Popular commercial scientific and engineering applications now provide GPU acceleration and even more significantly in new code development for scientific and engineering research.

What use cases are there for GPU technology?

High-performance computing has long relied on parallel systems to achieve the performance required by leading-edge science and engineering research. With the advent of GPU technology, the capability of single nodes is greatly enhanced, but still does not provide sufficient performance for current HPC applications, which currently rely on systems of individual CPUs working in concert to achieve the necessary performance. As well as for these use examples, GPU servers are becoming increasingly popular with leading Financial Institutions for deep learning, quantitative research and data analytics.