Advanced Topics GPU Programming and CUDA Architecture

Advanced Topics GPU Programming and CUDA Architecture

Mainak Adhikari (IMPS College of Engineering and Technology, India) and Sukhendu Kar (IMPS College of Engineering and Technology, India)
DOI: 10.4018/978-1-4666-8853-7.ch008
OnDemand PDF Download:
No Current Special Offers


Graphics processing unit (GPU), which typically handles computation only for computer graphics. Any GPU providing a functionally complete set of operations performed on arbitrary bits can compute any computable value. Additionally, the use of multiple graphics cards in one computer, or large numbers of graphics chips, further parallelizes the already parallel nature of graphics processing. CUDA (Compute Unified Device Architecture) is a parallel computing platform and programming model created by NVIDIA and implemented by the graphics processing units (GPUs). CUDA gives program developers direct access to the virtual instruction set and memory of the parallel computational elements in CUDA GPUs. This chapter first discuss some features and challenges of GPU programming and the effort to address some of the challenges with building and running GPU programming in high performance computing (HPC) environment. Finally this chapter point out the importance and standards of CUDA architecture.
Chapter Preview


At the start of multicore CPUs and GPUs the processor chips have become parallel systems. But speed of the program will be increased if software exploits parallelism provided by the underlying multiprocessor architecture. There is a need to design and develop the software so that it uses multithreading, each thread running concurrently on a processor, potentially increasing the speed of the program dramatically. To develop such a scalable parallel applications, a parallel programming model is required that supports parallel multicore programming environment. NVIDIA’s graphics processing units (GPUs) are very powerful and highly parallel. GPUs have hundreds of processor cores and thousands of threads running concurrently on these cores, thus because of intensive computing power they are much faster than the CPU. They were used for graphics purposes only. Now GPUs are becoming more and more popular for a variety of general-purpose, non-graphical applications too. For example they are used in the fields of computational chemistry, sparse matrix solvers, physics models, sorting, and searching etc. The programs designed for GPGPU (General Purpose GPU) run on the multi processors using many threads concurrently. As a result, these programs are extremely fast.

Parallelism is the future of computing. Future microprocessor development efforts will continue to concentrate on adding cores rather than increasing single-thread performance. One example of this trend, the heterogeneous nine-core Cell broadband engine, is the main processor in the Sony Play-Station 3 and has also attracted substantial interest from the scientific computing community. Similarly, the highly parallel graphics processing unit (GPU) is rapidly gaining maturity as a powerful engine for computationally demanding applications. The GPU’s performance and potential offer a great deal of promise for future computing systems, yet the architecture and programming model of the GPU are markedly different than most other commodity single-chip processors (Ghorpade et al., 2014).

The mobile phone has evolved into a powerful tool that can be used not only as a phone but also as a music and video player, calendar, TV, radio, and still image and video camera, as well as for gaming and surfing the Internet. The display technology has changed dramatically over the past ten years, and today resolutions of 320*240 are common (and increasing) with 65 thousand to 16.8 million possible colors per pixel. The mobile phone can be considered the most widespread device with graphics capabilities. Today, the visual content and its quality is a key differentiating factor for mobiles, and it is therefore of uttermost importance to do this part of the platform well in order to create a successful mobile phone. To create three dimensional graphics, specialized hardware called graphics processing units (GPUs) are used to render high-quality images. Most phones today do not yet have a GPU, but we are in the middle of a major change in which more and more phones are being equipped with them. We believe that the most important application will be to increase the experience in user interfaces (UIs) and games. User interfaces can indeed be the killer application. This is illustrated by devices such as the iPhone, where advanced graphics have been included mostly for the user interface. It should also be noted that the Android platform, managed by Google, for mobile devices also has extensive support for graphics, with support for OpenGL ES 1.0. Other examples of possible applications are navigation in three-dimensional maps (e.g., Google Earth), E-commerce (to look at products from different viewpoints), screen savers, augmented reality, avatars, messaging, and advertising. For professional users such as firefighters and rescue workers, there could be further applications in visualization such as three-dimensional blueprints of buildings, three-dimensional maps with overlay graphics, etc.

Complete Chapter List

Search this Book: