What is GPU Computing?
Today we will talk about GPU Computing: what it is, what it is used for and why it is used in most high-performance computing operations as an accelerator, for data processing in science and general use.
Nowadays, GPUs (Graphic Processing Units), in fact, have become the reference elements for accelerating workloads in the High Performance Computing (HPC) field and for applications related to training and inference in the field of Deep Learning and Artificial Intelligence.
Technically, the GPU is a “coprocessor”, i.e. it works as a support for the CPU (Central Processor Unit), inside a computer, dedicating itself to operations that require the processing of graphic images. GPUs are now also used for general purpose operations (GPGPU – General Purpose Computing on GPU), in various fields, from scientific and research to financial, to name a few, where the processing of large amounts of data is required. Within the data center, GPUs allow, in fact, to support parallel computing: each server accelerated by a GPU replaces dozens of servers equipped with generic CPUs, providing a substantial increase in application throughput at lower costs.
The GPU accelerates applications that run on CPU, taking care of those portions of code that take longer to process, while everything else continues running on CPU. This improves the overall system performance.
What are GPUs for?
About twenty years ago, GPUs were mainly used for 3D graphics processing, especially in the gaming field. Soon, computer scientists realized the real potential of these computing systems. Now, graphics technology it is applied more extensively to an ever wider range of problems. GPUs today are more programmable than ever, giving the flexibility to accelerate a wide range of applications that go far beyond rendering traditional chart.
In what areas are they used?
In the gaming field, there has been an advance in display technologies, just think of 4K screens, the increase in virtual reality games or high refresh rates. The GPUs respond perfectly to these new needs, allowing a smooth and fast gaming experience.
VIDEO EDITING AND MULTIMEDIA CONTENT CREATION:
Thank you to the parallel processing offered by GPUs it is possible to have times of very reduced high definition video and graphics rendering. Also, the GPUs allow greater energy efficiency.
GPU FOR MACHINE LEARNING
Some of the most interesting applications for GPU technology are about artificial intelligence and machine learning. Image recognition, for example, is one of those applications perfect for a GPU, as they leverage the parallel computing processing mechanism.
HIGH PERFORMANCE COMPUTING
GPU Architecture is ideal to run the most common computational kernels used in scientific computing, such as linear algebra, Fourier transforms, Monte Carlo methods… The use of such primitives has been allowing efficient exploitation of GPUs in a wide range of technical and scientific applications, making very easy the transition to GPU computing.
What are the main differences between CPU and GPU?
The processor, also called CPU (Central Processing Unit), is the central processing unit of a computer, it coordinates all the others processing units in the system in a centralized manner, both on external peripherals and on the internal electronic cards, such as the sound card, the video card and network card. The CPU also takes care of the execution of all the instructions that arrive from programs, which pass from hard-disk to RAM, working on sequential operations. Each CPU has a few dozen cores and works with clock frequency ranging from 2 to 5 GHz. In a CPU the different cores take care of different and independent operations. This way of working is named MIMD: multiple instructions, multiple data.
The GPU, on the other hand, has a highly parallel structure. It is normally composed of hundreds or thousands of cores capable of working with a frequency in the order of a single GHz. Although it works, therefore, at lower frequencies than a CPU, the GPU is able to process large blocks of data in a parallel, operating according to the SIMD system: single instruction, multiple data. In practice, only one instruction at a time, but through a system of computers that work in parallel. These small computers are called CUDA cores by NVIDIA, the world’s leading manufacturer of GPUs.
GPUs are very versatile: they can in fact operate on usual data at 32 and 64-bit, but they also have specialized units (Tensor Cores), capable of accelerating Artificial Intelligence algorithms and applications that require less individual accuracy for the single datum.
In GPUs, the ability to process a large dataset in parallel is supported by the ability to read and write data from its memory with a very high transfer rate (in the order of 1TB/s), making the GPU a suitable device also for memory-bound applications.
Want to know more about GPU Computing?