Overview
ABSTRACT
This article focuses on the architecture and the programming of graphics cards in order to perform computing. First is described the development of processors to parallelism, and the graphics card to the general purpose programming and massively parallel computing. The main architectures of graphics cards and software tools available for programming them are described. A more detailed description of NVIDIA CUDA programming language and associated libraries is performed, followed by an example of programming and optimization. Finally, an overview of the results and possible technical developments is given.
Read this article from a comprehensive knowledge base, updated and supplemented with articles reviewed by scientific committees.
Read the articleAUTHOR
-
Dominique HOUZET: University Professor - Grenoble-INP, Grenoble, France
INTRODUCTION
The evolution of graphics cards in recent years has been characterized by massive parallelism and programming genericity.
Increased parallelism has enabled rendering throughput to be increased both by multiplying the frequency of images generated and by increasing their size. Genericity has facilitated the emergence of new real-time rendering effects, thanks to programmable components such as programmable pixel shader units.
These two factors combined have made today's graphics cards very attractive for intensive calculations that go beyond visual rendering. The peak power of one of the new cards exceeds that of certain supercomputers for a price of a few hundred euros! This is the emergence of a new technique known as GPGPU (General-Purpose Computation on Graphics Processing Units) programming.
The GPGPU is supported by graphics card manufacturers such as NVIDIA and ATI/AMD, who see it as a new market for their products. They have introduced high-level languages and development environments that make it easily accessible to non-specialists. Today, GPGPU massively parallel computing is developing in supercomputers, desktop computers and embedded systems alike. The evolution of computer processors is also moving towards parallelism. Today's GPGPU techniques are gradually becoming the basis for tomorrow's PC programming. This is already possible with OpenCL (Open Computing Language), which is designed to be portable between CPU (Computer Processor Unit) and GPU (Graphic Processor Unit).
This article provides the keys to understanding how graphics processors can be used to increase the useful computing power of computers, with a particular focus on the issue of parallelism. Parallelism imposes strong constraints on programming and algorithms to take full advantage of GPU hardware architectures. The first section looks at the evolution of GPGPU-enabled graphics processors. In the second part, a description of current architectures enables the reader to grasp the qualities and limitations of graphics processors for parallel computing. The third part describes the main programming languages for GPGPU computing. A concrete example in the fourth section will give the reader an idea of what is at stake with these techniques, and help him or her to understand what kind of computing can be carried out with a good return on investment. The final section describes future developments that will bring about greater convergence between CPUs and GPUs, as well as developments in the software layer with a view to standardizing programming to ensure the portability of developments.
Exclusive to subscribers. 97% yet to be discovered!
You do not have access to this resource.
Click here to request your free trial access!
Already subscribed? Log in!
The Ultimate Scientific and Technical Reference
KEYWORDS
CPU | GPU | graphics rendering | parallel computing | HPC
This article is included in
Software technologies and System architectures
This offer includes:
Knowledge Base
Updated and enriched with articles validated by our scientific committees
Services
A set of exclusive tools to complement the resources
Practical Path
Operational and didactic, to guarantee the acquisition of transversal skills
Doc & Quiz
Interactive articles with quizzes, for constructive reading
General-purpose computing on graphics cards
Bibliography
(books, articles, symposium proceedings, theses and dissertations, referred to in the text as – and therefore numbered – or not)
Websites
(portals, personal pages, forums, discussion lists)
HARRIS Mark General-Purpose Computation on Graphics Hardware http://gpgpu.org/ (page accessed September 20, 2015). The most important site on the subject with news, forums and tutorials.
NVIDIA Corporation CUDA Zone – The resource for CUDA developers...
Events
(conferences, trade shows, symposia, study days)
Conference and exhibition: The International Conference for High Performance Computing, Networking, Storage, and Analysis (SuperComputing) http://www.sc-conference.org takes place every year, presenting trends and innovations in high-performance computing.
...Exclusive to subscribers. 97% yet to be discovered!
You do not have access to this resource.
Click here to request your free trial access!
Already subscribed? Log in!
The Ultimate Scientific and Technical Reference