While it seems that central processing units (CPUs) get all the glory for computing horsepower, graphical processing units (GPUs) have become the processor of choice for many types of intensively parallel computations.
As the boundaries of computing are pushed in areas such as speech recognition and natural language processing, image and pattern recognition, text and data analytics, and other complex areas, researchers continue to look for new and better ways to extend and expand computing capabilities. For decades this has been accomplished via high-performance computing (HPC) clusters, which use huge amounts of expensive processing power to solve problems.
Researchers at the University of Illinois had studied the possibility of using graphics processing units (GPUs) in desktop supercomputers to speed processing of tasks such as image reconstruction, but it was a computing group at the University of Toronto that demonstrated a way to significantly advance computer vision using GPUs. By plugging in GPUs, previously used primarily for graphics, it became possible to achieve huge performance gains on computing neural networks, and these gains were reflected in superior results in computer vision.
CPU Vs. GPU
Unlike CPU applications, however, programs running on graphical processing units (GPUs) currently have no direct access to files on the host OS file system. Although the power, functionality, and utility of today’s GPUs now extend far beyond graphics processing, the coprocessor-style GPU programming model still requires developers to manage movement of data explicitly between its “home” in the CPU’s main memory and the GPU’s local memory.
What does a GPU do differently than a CPU and why don’t we use them for everything? Find out below from Jem Davies, VP of Technology at ARM.
CPU vs GPU (What’s the Difference?)
GPU architectures have their roots in basic graphical rendering operations, such as shading. In 1999, Nvidia introduced the GeForce 256, often referred to as the world’s first GPU – the specialized circuits, which can be built into a video card or on a motherboard to optimize computer memory for accelerating rendering.