The Purpose Of Gpus In General Computing Computer Science Essay

Published: November 9, 2015 Words: 1654

Over the past few years there has been a marked increase in the computation power of the GPU.Modern GPUs have become extremly flexible and powerful processors.They provide tremendeous memory bandwidth and computation power and also modern GPUs support double presicion floating point operations.Rapid increase of programability and computation power of GPU has been made a research community. High level languages has emerged to make use of the resources of the GPU. Researchers has achived a remarkable speedup over CPU on some non graphics problems.In this research we describe background of GPU hardware architecture,evolution of the GPU from discreet design to unified design,characteristics of GPU,applicability of these characteristics for general purpose computing,software environments and languages available for GPU programming,algorithms and applications and fututure of GPU computing.

GPUS are special types of processors which were traditionally designed for a particular class of applications. Today there is a higher visibility of using GPUs in scientific application and high performance computing. In June 2010 world fastest GPU supercomputer was released. It is the highest ranked GPU supercomputer ever made and it is the fastest in the peak theoretical performance in the world. NVidia Tesla C2050 GPU is used here to achieve highest computation power.

In chapter 2, Graphics pipeline and evolution of the GPU architecture are discussed. Basic steps in the graphics pipeline and evolution of the GPU from discrete design to a unified design are discussed in this chapter. In chapter 3, GPU programming model will be discussed. Characteristics of the GPU and applicability of these characteristics for general purpose computing will be discussed here. In chapter 4, Software environments for GPU computing will be discussed. Abilities and limitations of different languages available for GPU computing will be discussed here. In chapter 5, Algorithms and applications of GPU are discussed. Basic algorithms that can be applied on the GPU and current application scenarios are discussed in this chapter. And finally future trends of GPU computing will be discussed in chapter 6.

GPU is a processor with huge computational resources. Before few years ago GPU was a fixed function processor which was made only for graphics operations. But now the trend is that it has been begun to improve the functionality of GPU into a parallel programmable processor on which real world programs can be implemented.

In the vertex processing each vertex is processed individually. In the typical usage image has hundreds to thousands of vertices. Processing of these vertices require same instruction with different data sets. GPUs are stream processors on which thousands of threads can be implemented simultaneously. Since same function is applied on different data sets, GPUs are well suited for this stage.

Rasterization is the process of hidden surface removing. This is done by considering which screen-space pixel locations are covered by each triangle. In the rasterization step each triangle generates a fragment at each pixel location that it covers. Many triangles can overlap at any pixel location. So color values of fragments should be computed using several fragments.

Using DirectX Compute it is possible to write kernels in HLSL. Using OpenCL driver, it is possible to write OpenCL kernels in a C-like language called "OpenCL C"�. Using CUDA driver API, applications can be written to directly access the CUDA driver. This offers huge control of hardware. But it is complex than other approaches since it handles with assembly code (PTX assembly).

Tianhe-I is a super computer built by China and it uses Intel Xeon processors with 5120 (ATI Radeon HD 4870 X2) GPUs. It ranks as world's 5th fastest supercomputer in the TOP500 list. Tianhe-l has achieved a computation power of 563teraflops in the tests, but theoretically it is capable of delivering 1.206petaflops processing power. This supercomputer is used to simulate petroleum exploration and aircraft simulation.Other thing is that GPUs provide cost and energy efficiency when building supercomputers.

CSIRO's super-computer cluster is another Super computer built by Australia and it delivers over 256teraplops performance. This supercomputer has 64 (NVIDIA Tesla S1070s) Units (each unit has 4 Tesla GPUs and hence totals of 256 GPUs). This super computer supports the research areas like computational biology, climate and weather, multi-scale modeling, computational fluid dynamics, computational chemistry, astronomy and astrophysics, computational imaging and visualization, advanced materials modeling, computational geosciences. Currently there are some projects are undertaken using this super computer. They are

High-content analysis of nerve cell images for medical research and drug discovery,

deconvolving (un-blurring) 3D images from astronomy, microscopy and medical imaging,

reconstructing large 3D computer tomography (CT) images from medicine and materials science and developing specialised software to run on the Australian Synchrotron,

quantifying uncertainty in complex environmental models,

simulating in high resolution biomechanical processes like the movements of a person swimming

GPU programming concepts can be applied in distributed grid computing. One example project for this is Folding@home. Goal of this project is to understand protein folding, misfolding, and related diseases.

\vspace{0.5cm}

\newline

In addition to scientific computing GPU's are already used in some other areas.

GPUs have been successfully used to accelerate digital video processing and image processing. "Badaboom video encoder"� and "Mediacoder"� are capable of encoding video using CUDA H264 codec with NVIDIA CUDA technology. This approach delivers about 20x performance increase compared with CPU based video encoding. Currently major video editing softwares like "Cyber link power director" and "Adobe premier" use GPU acceleration for video processing. And also major image editing softwares like "Adobe photoshop" also use GPU acceleration.

%"vReveal"�is a new video editing software and it uses NVIDIA CUDA technology to %accelerate video processing and they say it can deliver up to 5x performance %increase with GPU acceleration.Some other video editing software developers like %"TMPG express"�, "virtualdub"� and "NERO vision"� have already added GPU %accelerated video processing capabilities with their softwares.

%GPU acceleration has already been used in video decoding also. As an example %"core AVC" is the currently fastest h264 video decoder and it is capable of %decoding video with NVIDIA CUDA technology.

Researchers are being used GPUs for optimizing database query processing. PostgreSQL is an example DBMS that has been used for researches.

GPUs are also been used in cryptography. Brute force password recovery is a very computation intensive process. So in this scenario it can be made use the computation power of GPU. As an example "ElcomSoft Distributed Password Recovery"� is a GPU accelerated password recovery tool and developers say that GPU acceleration reduces password recovery time by a factor of 50. "Parallel Password Recovery"�and "OctoPass"� are some other tools that use GPU acceleration. With the invention of GPU based password recovery algorithms, it has to be revised common password polices(likepassword length of 8).

Physics simulation is another area that GPUs can be used. Physics has very high data parallelism. There are 1000s of collision to resolve every frame and large amount of operations are required per collision. Very high data parallelism nature of GPU helps to solve this. In the past, dedicated cards were used for physics processing. It is now possible to use graphic cards for simulating physics.

\chapter{Conclusion and Future Directions}

Since the last few years, GPU computing has been becoming a widely talking topic. Many researchers have proven the capability of using GPU for general purpose computing. In 2007 NVIDIA developed CUDA architecture which reduced the difficulty of programming GPUs for non graphic compute operations. CUDA gave grate flexibility when using GPUs for general purpose computing. This flexibility made a high motivation in GPGPU industry. NVIDIA next generation CUDA architecture is called FERMI and "it makes GPU and CPU co-processing pervasive by addressing the full-spectrum of computing applications"� said developers.

In December 2009, OpenCL 1.0 was released by Khronos Group and OpenCL specification is still under development. OpenCL is a cross language and so Both ATI and NVIDIA GPUs can be programmed. OpenCL provide features like CUDA give and has achieved a large interest.

GPU computing has achieved a big place in scientific computing and high performance computing(HPC). In June 2010, fastest GPU based supercomputer (with highest theoretical computation power in the world) was developed and in future many a supercomputers will be GPU based ones.

\vspace{0.1cm}

\newline

In the upcoming years we expect to see several changes in GPU computing.

Rcently both NVIDIA and ATI added double precision support in the GPU hardware. Double precision support made a large interest in scientific computing. Double precision support of GPU is still not substantial. So GPU developers are further improving the double precision support of the hardware.

The PCI Express bus has been a bottleneck for many GPU applications. Latest PCI Express 2 bus delivers more bandwidth to overcome this issue to some extent. Maximum bandwidth of PCI Express 2 is 16GB/s and today CPUs have much bandwidth than this. So improvements of the CPU-GPU bandwidth are needed in the future.

AMD is planning to place GPU and CPU together in the same die called APU (accelerated processing units). The AMD Fusion APUs are expected to launch in the 2011. Today APIs like OpenCL has proven the ability of programming using both CPU and GPU. So this thing will be a good trend.

In GPU computing there is still not good cooperation between GPUs. Windows display driver model 2.1 will help to make use the multitasking capabilities of GPUs with good memory management.

\begin{thebibliography}{99}

\bibitem{lamport94}

John D. Owens, Mike Houston, David Luebke, Simon Green,

John E. Stone, and James C. Phillips.

\emph{ GPU Computing}.

2008.

\bibitem{lamport94}

Mark Harris.

\emph{GPGPU: General General-Purpose Computation on GPUs}.

NVIDIA Corporation.

\bibitem{lamport94}

Alexander Zibula.

\emph{General Purpose Computation on

Graphics Processing Units (GPGPU) using CUDA}.

2009.

\bibitem{lamport94}

Mike Houston.

\emph{Advanced Programming (GPGPU)}.

\bibitem{lamport94}

David Luebke.

\emph{GPU Architecture:

Implications \& Trends}.

NVIDIA Corporation.

2008.

\bibitem{lamport94}

John Owens,UC Davis.

\emph{GPU Architecture Overview}.

GPGPU.

2007.

\bibitem{lamport94}

\emph{NVIDIA CUDA Architecture Introduction \& Overview}.

NVIDIA Corporation.

2009.

\bibitem{lamport94}

\emph{CSIRO's CPU-GPU supercomputer cluster}.

\url{http://http://www.csiro.au/resources/GPU-cluster.html}.

\bibitem{lamport94}

\emph{GPUSort}.

\url{http://gamma.cs.unc.edu/GPUSORT/}.

\bibitem{lamport94}

\emph{A GPU Framework for Solving Systems of Linear Equations}.

\url{http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter44.html}.

\end{thebibliography}

%\newpage

%\bibliographystyle{IEEEtran}

%\bibliography{bibo}

%\nocite{*}

\end{document}