X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/book_gpu.git/blobdiff_plain/d53d37855452b853b3db760e528dee96179dbe08..e4346947aa62df9cab78e792050767d42c5f5ab3:/BookGPU/Chapters/chapter1/ch1.tex diff --git a/BookGPU/Chapters/chapter1/ch1.tex b/BookGPU/Chapters/chapter1/ch1.tex index ee767b1..b15918e 100755 --- a/BookGPU/Chapters/chapter1/ch1.tex +++ b/BookGPU/Chapters/chapter1/ch1.tex @@ -9,12 +9,12 @@ This chapter introduces the Graphics Processing Unit (GPU) architecture and all the concepts needed to understand how GPUs work and can be used to speed up the execution of some algorithms. First of all this chapter gives a brief history of -the development of Graphics card until they can be used in order to make general -purpose computation. Then the architecture of a GPU is illustrated. There are -many fundamental differences between a GPU and a tradition processor. In order -to benefit from the power of a GPU, a CUDA programmer needs to use threads. They -have some particularities which enable the CUDA model to be efficient and -scalable when some constraints are addressed. +the development of Graphics card until they have been used in order to make +general purpose computation. Then the architecture of a GPU is +illustrated. There are many fundamental differences between a GPU and a +tradition processor. In order to benefit from the power of a GPU, a CUDA +programmer needs to use threads. They have some particularities which enable the +CUDA model to be efficient and scalable when some constraints are addressed. @@ -24,14 +24,14 @@ Video cards or Graphics cards have been introduced in personal computers to produce high quality graphics faster than classical Central Processing Units (CPU) and to alleviate CPU from this task. In general, display tasks are very repetitive and very specific. Hence, some manufacturers have produced more and -more sofisticated video cards, providing 2D accelerations then 3D accelerations, +more sophisticated video cards, providing 2D accelerations then 3D accelerations, then some light transforms. Video cards own their own memory to perform their -computation. For at least two dedaces, every personnal computer has had a video +computation. For at least two decades, every personal computer has had a video card which is simple for desktop computers or which provides many accelerations for game and/or graphic oriented computers. In the latter case, graphic cards may be more expensive than a CPU. -Since 2000, video cards have allowed users to apply arithmetics operations +Since 2000, video cards have allowed users to apply arithmetic operations simultaneously on a sequence of pixels, also later called stream processing. In this case, the information of the pixels (color, location and other information) are combined in order to produce a pixel color that can be displayed on a screen. @@ -60,11 +60,11 @@ graphics processing unit (GPGPU) computing. Of course other programming models have been proposed. The other well-known alternative is OpenCL which aims at proposing an alternative to Cuda and which is multi-platform and portable. This is a great advantage since it is even possible to execute OpenCL programs on -traditionnal CPUs. The main drawback is that it is less tight with the hardware +traditional CPUs. The main drawback is that it is less tight with the hardware and consequently sometimes provides less efficient programs. Moreover, Cuda benefits from more mature compilation and optimization procedures. Other less known environments have been proposed, but most of them have been stopped, for -example we can cite: FireStream by ATI which is not maintened anymore and +example we can cite: FireStream by ATI which is not maintained anymore and replaced by OpenCL, BrookGPU by Standford University~\cite{ch1:Buck:2004:BGS}. Another environment based on pragma (insertion of pragma directives inside the code to help the compiler to generate efficient code) is call OpenACC. For a @@ -126,7 +126,7 @@ performance optimizations such as speculative execution which roughly speaking consists in executing a small part of code in advance even if later this work reveals itself to be useless. On the contrary, GPUs do not have low latency memory. In comparison GPUs have small cache memories. Nevertheless the -architecture of GPUs is optimized for throughtput computation and it takes into +architecture of GPUs is optimized for throughput computation and it takes into account the memory latency. @@ -152,7 +152,7 @@ computation of other tasks. \section{Kinds of parallelism} -Many kinds of parallelism are avaible according to the type of hardware. +Many kinds of parallelism are amiable according to the type of hardware. Roughly speaking, there are three classes of parallelism: instruction-level parallelism, data parallelism and task parallelism. @@ -170,7 +170,7 @@ data parallelism paradigm. This paradigm is linked with the Single Instructions Multiple Data (SIMD) architecture. This is the kind of parallelism provided by GPUs. -Taks parallelism is the common parallism achieved out on clusters and grids and +Task parallelism is the common parallelism achieved out on clusters and grids and high performance architectures where different tasks are executed by different computing units. @@ -187,7 +187,7 @@ architecture, the performance is led by the use of a huge number of threads is no context switching as in CPUs and each thread has its own registers. In practice, threads are executed by SM and are gathered into groups of 32 threads. Those groups are called ``warps''. Each SM alternatively executes -``active warps'' and warps becoming temporarilly inactive due to waiting of data +``active warps'' and warps becoming temporarily inactive due to waiting of data (as shown in Figure~\ref{ch1:fig:latency_throughput}). The key to scalability in the CUDA model is the use of a huge number of threads.