Today we will discuss the differences between CPU and GPU. While both are meant to do similar jobs, the applications for each put them into different categories. While CPU may be used for traditional desktop processing, GPU power is seeing more usage in other areas. Let us look at a few of those areas and some key differences between CPU vs GPU.
Why Have Two Different Processor Types, Anyway?
Everyone is somewhat familiar with CPUs. Known as the “brain” of a computer, they are composed of millions upon millions of tiny transistors with multiple “cores.” It is critical for handling the main processing functions of a computer. Actions like running the operating system and applications would not be possible without it. The CPU is also what determines the general speed of a computer.
GPUs are more specialized in nature. Originally designed to help with 3D rendering, they can do more processing in parallel. This is perfect for use in graphic-intensive applications that rely on displaying dynamic content for gaming, or compressing/decompressing streaming videos. GPUs are also being used in many other areas beyond rendering and image processing, like Artificial Intelligence and Bitcoin mining.
The main difference between a CPU and a GPU is how they process the instructions given to them. In human terms, you could say that a CPU is the master of taking on one task at a time, whereas a GPU can take on many tasks at once. While there are some that work better doing things in sequential order, others can multitask.
A CPU receives a set of data for processing and does so sequentially. Everything is processed in order. GPUs can spread the data across multiple processing units designed for specific tasks. This method of distributing the workload into parallel processes is the core reason to offload tasks to the GPU whenever possible.
To demonstrate the power of CPU vs GPU, NVIDIA enlisted the help of the geeky duo that co-starred in the popular series “MythBusters.” Adam Savage and Jamie Hyneman took a highly-recognizable piece of art and reproduced it using a combination of robotics and paintballs. The video “MythBusters Demo GPU versus CPU” shows a colorful recreation using both CPU and GPU methodologies.
As you may expect, the first demonstration illustrating CPU behavior, shows a slow but accurate serial firing of the paint shots, creating the famously smiling subject. Increasing the speed demonstrates it has the capability of firing quickly, but nothing like the next demonstration.
Leonardo 2.0 is the MythBusters’ masterpiece machine that illustrates GPU behavior, to perform parallel processing. In doing so, they can recreate much more detailed works of art – specifically, the Mona Lisa. With a countdown and a shiny button, the machine produced the art almost instantly. While it may look like everything happens at once, a slow-motion replay confirms things are happening in an organized manner.
The Symbiotic Relationship of CPU and GPU
Just because they’re different doesn’t mean one is better than the other. More like each has a specific application in today’s technology. You would not want to try and render highly detailed 3D graphics without a GPU to make the process more efficient. On the other hand, you would not use a graphic processor for the type of computing power needed by database servers, web browsers, and office applications.
The CPU can do the same computations done by the GPU. However, hardware manufacturers recognized that offloading some of the more common multimedia-oriented tasks could relieve the CPU and increase performance. This performance increase is only possible with the correct level of CPU and GPU coordination.
GPU is not meant to replace CPU: the CPU is still the main processor of computing hardware flow. It is the one that makes the decision to handle a batch of data for processing or pass that on to the GPU.
For example, while a CPU can do the same computations for an application, the GPU is often used because of how it is designed. Within the GPU are multiple instructions that can be re-used. These instructions are designed to be run in parallel.
The interaction takes place when a programmer uses various programming routines to capitalize on the existence of a GPU. With data transfer happening at the “Bus-level,” the payload and the returning results are quickly exchanged. Today, the need to identify which processing tasks should better be passed to the GPU is on the programmer; however, an idea of “automatic” offloading to the GPU is being explored (see this paper and this one) – but this is all just at an academic level at this point.
Advanced Usage of GPUs
The way GPUs are being used in today’s applications is expanding all the time. It is not just for workloads like graphical rendering for video games. It is being used to progress cutting-edge technology: Artificial Intelligence is used in the modeling of AI applications that do operations like sentiment analysis, financial forecasting, and image processing.
In the AI sphere, GPUs enable a more scalable approach to deep learning, which requires processing mass amounts of data that can be processed efficiently using GPUs. It is this complexity and processing of data that makes targeting GPU a preferred method.
NVIDIA is a leading manufacturer of graphic hardware. They provide the HPC SDK so developers can take advantage of parallel processing power using one or more GPU or CPU. By doing so, developers can use the CUDA Toolkit to enable parallel processing in applications.
There is a lot of information available to quick start those looking for a platform to start taking advantage of NVIDIA’s GPUs. Implementing parallel processing becomes less of a hassle when you have the right tools. NVIDIA provides CUDA for Windows & Linux. Both versions are free and easy to install. Read more about CUDA and how to get started with C, C++, and Fortran.
For NVIDIA’s examples of deep learning with GPU, see https://developer.nvidia.com/deep-learning-examples.
Making a Difference Where It Counts
Talking theory of CPU vs GPU is one thing; seeing it in action is another. Two examples of companies that took direct action for the better are now appreciating the benefits that C++/CUDA can offer. These companies chose to partner with Incredibuild and solve issues that directly affected their ability to progress with their CI/CD.
MEDIAPRO Kickstarts Productivity with CUDA
Sporting event organizers have a lot to thank MEDIAPRO for when it comes to producing video without the large team that is usually needed. Leading the supply-chain to AV groups, their product AutomaticTV provides professionally produced video using Artificial Intelligence. Something of this magnitude needs resources to be compiled efficiently. Otherwise, developers may be twiddling their thumbs instead of working on the next task.
Their current workflow did not support what they needed. From a lack of mental focus due to switching between branches, to dependencies that still take too much time to efficiently manage. The combination was a challenge. The solution was a combination effort of Incredibuild and their partnership with NVIDIA.
Read more about how Incredibuild decreased compilation time by 85% by installing Incredibuild on developer machines that focused on the C++/CUDA application.
GeoTeric® Increases Quality and Velocity
GeoTeric® knows something about savings when it comes to compilation times. Their desktop application requires thousands of C++ files and millions of lines of code. This application focuses on displaying geological elements for 3D modeling. Even with this high level of technology backing the application, it became tough to do some of today’s best-practice methodologies. Agile development that includes automated testing can be stymied with slow builds.
Including Incredibuild in their workflow enabled GeoTeric® to decrease their CUDA-specific compilations from 15 minutes to 3, and an overall build time that plummeted to 11 minutes versus a staggering 2 hours. As you can imagine, this type of increase in compile performance led to the increase in velocity they needed.
Find out how they used this opportunity to stop manual testing, decrease build times, and decrease delivery time.