Heterogeneous Computing: Long Live the CPU

Print Friendly, PDF & Email

In this guest article, our friends at Intel discuss how the company is investing in heterogeneous computing. Intel recently spoke about supporting heterogeneous computing with the catch phrase “One Size Does Not Fit All” in talking about software and Intel’s commitment to help programmers with oneAPI.

During the meteoric rise of the microprocessor from 1995 to 2005, we could have renamed the Central Processing Unit (CPU) to the Only Processing Unit (OPU). The rapid advancements in the capabilities of a CPU made it seem that no other computing was needed in a computer system. Floating-Point Processing Units (FPUs), once separate from a CPU, became absorbed into the ubiquitous CPUs.

During that same decade, the pursuit of better graphics gave rise to offloading graphics work to sophisticated pipelines designed into Graphics Processing Units (GPUs). While many CPU designs absorbed GPUs, high-end GPUs remained discrete as user demands outstripped what would fit in a single chip for the higher end graphic needs.

The world of compute began to see a new world of heterogeneous computing using two devices: CPU + GPU. The need for compute density, acceleration of computations, and improved power efficiency has driven continuing innovation in both CPUs and GPUs. The days of OPU are definitely over.

More is Better

In a world with Big Data and diverse workloads, the need for compute seems endless — and now with the influence of AI through new workloads and merged workloads, the need for compute feels insatiable. The hunger for compute has spurred architectural innovations in the pursuit of more compute capabilities. Today, there are many efforts to create new devices in the quest to participate in the heterogeneous world of computing. Most new market entrants are using FPGAs or ASICs, but there are a few full custom designs as well.

Learning from Our Past as We Plunge into a Heterogeneous World

There are two lessons from the past especially worth addressing in this new world of heterogeneous computing:

  • Keep the CPU strong, even as you surround it with additional devices
  • Address single source programming, when you distribute compute

Let’s consider the evidence that these are lessons from the past will affect our future.

Keep the CPU Strong

If you are selling a CPU, you tell people to buy a strong CPU. If you are not selling a CPU, you encourage the customer’s money be spent on your device instead of a strong CPU. Who should we listen to? That pesky Amdahl’s Law never goes away, and considering it gives us guidance.

Amdahl’s Law, plays a critical role in the need for a strong CPU. In a heterogeneous system, the “other” processing units (not CPU), in the system, give up some ability to do general scalar programming operations well in order to specialize. We know this always happens, because if a device can gain specialization, without compromise, then it would simply be a better CPU.

Parallel programmers learn to hate slow serial processing, because it destroys scaling at an alarming rate thanks to Amdahl’s Law.

If a system design uses full speed computing for 99.999% of the computation (for instance, on 30000 devices), but processes serial work at 1/3 that performance (for instance, a slow CPU) – Amdahl’s Law tells us that we’ll see no more than 68% of the performance that we could obtain with full speed serial processing. [1]

Any investment in speeding up an application, is easily destroyed if the serial part is compromised — even if the serial part is only 0.001% of the application. This is important to note, because any heterogeneous systems, with their computing distributed across various devices, must be able to scale. While clever programming may be able to mitigate such issues, it is impossible to dispute that a strong CPU makes that job easier for programming — a lot easier!

Single Source Programming

Single source programming means that we can program all our devices, within a single source code file. Of course, we can still break up our code into multiple source files for large projects as we usually do. The key is that we are not required to segregate code based on the device that we wish to utilize. The world is made easier when a favorite header file or library supports all the devices that we want to use within our single source program.

Allowing all devices to shine should yield better results than programming approaches that focus on highlighting a particular device over all others.

Intel Investing in Heterogeneous Computing

Intel recently spoke about supporting heterogeneous computing with the catch phrase “One Size Does Not Fit All” in talking about software and Intel’s commitment to help programmers with oneAPI.

Intel’s oneAPI project is a big investment by Intel to address programming needs for heterogeneous computing, while aiming to let all devices shine including the CPU.

This could be the helping hand programmers need in a world of Big Data, specialized workloads, a convergence of HPC and AI, and heterogeneous architectures.

Intel’s taxonomy of heterogeneous computing components, based on strengths as scalar, vector, spatial, and matrix.

Learn more about the various components Intel is discussing:

Intel technologies’ features and benefits depend on system configuration and may require enabled hardware, software or service activation. Performance varies depending on system configuration. No computer system can be absolutely secure. Check with your system manufacturer or retailer or learn more at www.intel.com/hpc

Intel, the Intel logo, and other Intel marks are trademarks of Intel Corporation.

Other names and brands may be claimed as the property of others.

© Intel Corporation

[1] Amdahl’s Law math: ((99999/30000)+1) / ((99999/30000)+3)