Visual processors for High Performance Computing (HPC)

The chips that drive the visual processing behind advanced video games are finding a role in many other applications which depend upon High Performance Computing (HPC).

Typically, 5% of the code of an application is compute intensive, but that area of software often has a large, even dominant, impact on the functionality or viability of the application.

Traditional CPUs provide a small number of sophisticated processor cores and are designed for efficient sequential computation. GPUs, by contrast, provide thousands of simpler cores, and are designed for efficient parallel computation. It turns out that many applications can benefit. Opportunities exist in many fields, including scientific HPC, engineering, consumer and enterprise applications, energy-efficient datacenters, embedded applications (including Internet of Things), mobile devices, drones and robotics.

GPUs are expanding their role beyond the image and video processing for which they are known.

In computationally intensive science, GPU architectures are used in computational biology and chemistry, fluid dynamics simulation, CT image reconstruction, seismic analysis, ray tracing, and more. General purpose GPU clusters are also driving the industry’s pursuit of exascale computing.

Nvidia, a leader in the development of GPU technology, claims that there are now more than 700 GPU clusters installed around the world, in Fortune 500 companies ranging from Schlumberger and Chevron in the energy sector to BNP Paribas in banking. And in modern operating systems, such as Windows 8 and OSX Yosemite, the GPU can now be made available to any application as a co-processor, in addition to acting as the graphics processor. For example, a desktop or server application wishing to accelerate machine learning (big data predictive analytics) calculations could stream them to a GPU.

To understand how a GPU can provide orders of magnitude performance advantages, it is helpful to understand the concept of “embarrassingly parallel” algorithms. These are workloads for which there is little or no effort required to convert the algorithm from a single sequential thread to many, perhaps thousands or millions, of parallel tasks. Critically, it must be possible to express the algorithm in a way that minimizes the need for parallel tasks to communicate intermediate results among themselves. This is then called parallel processing, as opposed to distributed computing. Processing all of the pixels in a video stream, for example, is “embarrassingly parallel” the opposite of “inherently serial”.

Manufacturers of GPU devices naturally wish to find the widest market for their products. They have realized that the stream processing inherent to the GPU architecture can be re-purposed for general-purpose computation. The graphics “shader” pipeline can be fed with any other kinds of instructions.

To build yourself a super-computer, many individual GPUs can be arranged in a cluster. Cluster software specifically designed to exploit the power of GPUs has been developed. Software systems also exist to translate suitable workloads into optimized parallel processing streams. The art and science of using GPU is evolving rapidly.

With the advent of general purpose GPUs, HPC is no longer restricted to the super-computer environment.

Trackbacks

  1. […] Visual processors for High Performance Computing (HPC) […]

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: