Introduction to GPU Programming Languagesusers.wfu.edu/choss/CUDA/docs/Lecture 3.pdf · Single...
Transcript of Introduction to GPU Programming Languagesusers.wfu.edu/choss/CUDA/docs/Lecture 3.pdf · Single...
![Page 1: Introduction to GPU Programming Languagesusers.wfu.edu/choss/CUDA/docs/Lecture 3.pdf · Single Instruction, Multiple Data (SIMD) • Element-wise operations on vectors or matrices](https://reader034.fdocuments.in/reader034/viewer/2022042708/5f3a476a45d38c106e3e47c5/html5/thumbnails/1.jpg)
Introduction to GPU Programming Languages
Copyright © 2011 Samuel S. Cho
CSC 391/691: GPU Programming Fall 2011
![Page 2: Introduction to GPU Programming Languagesusers.wfu.edu/choss/CUDA/docs/Lecture 3.pdf · Single Instruction, Multiple Data (SIMD) • Element-wise operations on vectors or matrices](https://reader034.fdocuments.in/reader034/viewer/2022042708/5f3a476a45d38c106e3e47c5/html5/thumbnails/2.jpg)
Maryland CPU/GPU Cluster Infrastructure
http://www.umiacs.umd.edu/research/GPU/facilities.html
![Page 3: Introduction to GPU Programming Languagesusers.wfu.edu/choss/CUDA/docs/Lecture 3.pdf · Single Instruction, Multiple Data (SIMD) • Element-wise operations on vectors or matrices](https://reader034.fdocuments.in/reader034/viewer/2022042708/5f3a476a45d38c106e3e47c5/html5/thumbnails/3.jpg)
Intel’s Response to NVIDIA GPUs
![Page 4: Introduction to GPU Programming Languagesusers.wfu.edu/choss/CUDA/docs/Lecture 3.pdf · Single Instruction, Multiple Data (SIMD) • Element-wise operations on vectors or matrices](https://reader034.fdocuments.in/reader034/viewer/2022042708/5f3a476a45d38c106e3e47c5/html5/thumbnails/4.jpg)
To Accelerate Or Not To Accelerate
• Pro:
• They make your code run faster.
• Cons:
• They’re expensive.
• They’re hard to program.
• Your code may not be cross-platform.
![Page 5: Introduction to GPU Programming Languagesusers.wfu.edu/choss/CUDA/docs/Lecture 3.pdf · Single Instruction, Multiple Data (SIMD) • Element-wise operations on vectors or matrices](https://reader034.fdocuments.in/reader034/viewer/2022042708/5f3a476a45d38c106e3e47c5/html5/thumbnails/5.jpg)
When is GPUs appropriate?
• Applications
• Traditional GPU Applications: Gaming, image processing
• i.e., manipulating image pixels, oftentimes the same operation on each pixel
• Scientific and Engineering Problems: physical modeling, matrix algebra, sorting, etc.
• Data parallel algorithms:
• Large data arrays
• Single Instruction, Multiple Data (SIMD) parallelism
• Floating point computations
![Page 6: Introduction to GPU Programming Languagesusers.wfu.edu/choss/CUDA/docs/Lecture 3.pdf · Single Instruction, Multiple Data (SIMD) • Element-wise operations on vectors or matrices](https://reader034.fdocuments.in/reader034/viewer/2022042708/5f3a476a45d38c106e3e47c5/html5/thumbnails/6.jpg)
Parallel Hardware Landscape: Instruction and Data Streams
• Flynn’s Classification: Hardware dimensions of memory and control
Data StreamsData Streams
Single Multiple
Instruction Streams
Single SISD:Intel Pentium 4
SIMD:GPUsInstruction
StreamsMultiple MISD:
No Examples TodayMIMD:Intel Nalhelm
![Page 7: Introduction to GPU Programming Languagesusers.wfu.edu/choss/CUDA/docs/Lecture 3.pdf · Single Instruction, Multiple Data (SIMD) • Element-wise operations on vectors or matrices](https://reader034.fdocuments.in/reader034/viewer/2022042708/5f3a476a45d38c106e3e47c5/html5/thumbnails/7.jpg)
Single Instruction, Multiple Data (SIMD)
• Element-wise operations on vectors or matrices of data.
• Multiple processors: All processors execute the same set of instructions at the same time
• Each with data at a different address location.
• Advantages:
• Simplifies synchronization
• Reduces instruction control hardware; One program, many results.
• Works best for highly data-parallel applications (e.g., matrix operations, monte carlo calculations)
0,0 0,1 0,2 0,3
1,0 1,1 1,2 1,3
2,0 2,1 2,2 2,3
3,0 3,1 3,2 3,3
Example Instruction:A[i][j] = A[i][j]++;
![Page 8: Introduction to GPU Programming Languagesusers.wfu.edu/choss/CUDA/docs/Lecture 3.pdf · Single Instruction, Multiple Data (SIMD) • Element-wise operations on vectors or matrices](https://reader034.fdocuments.in/reader034/viewer/2022042708/5f3a476a45d38c106e3e47c5/html5/thumbnails/8.jpg)
CPU vs. GPU Hardware Design Philosophies
Cache
ALU Control
ALU
ALU
ALU
DRAM
CPU
DRAM
GPU
![Page 9: Introduction to GPU Programming Languagesusers.wfu.edu/choss/CUDA/docs/Lecture 3.pdf · Single Instruction, Multiple Data (SIMD) • Element-wise operations on vectors or matrices](https://reader034.fdocuments.in/reader034/viewer/2022042708/5f3a476a45d38c106e3e47c5/html5/thumbnails/9.jpg)
GPU
CPU
CUDA-capable GPU Hardware Architecture• Processors execute computing threads
• Thread execution managers issues threads
• 128 thread processors grouped into 16 streaming multiprocessors (SMs)
• Parallel Data Cache enables thread cooperation.
Load/store
Global Memory
Thread Execution Manager
Input Assembler
Host
Texture Texture Texture Texture Texture Texture Texture Texture Texture
Parallel Data Cache
Parallel Data Cache
Parallel Data Cache
Parallel Data Cache
Parallel Data Cache
Parallel Data Cache
Parallel Data Cache
Parallel Data Cache
Load/store Load/store Load/store Load/store Load/store
GPU
CPU
...
![Page 10: Introduction to GPU Programming Languagesusers.wfu.edu/choss/CUDA/docs/Lecture 3.pdf · Single Instruction, Multiple Data (SIMD) • Element-wise operations on vectors or matrices](https://reader034.fdocuments.in/reader034/viewer/2022042708/5f3a476a45d38c106e3e47c5/html5/thumbnails/10.jpg)
GPU
CPU
CUDA-capable GPU Hardware Architecture• Processors execute computing threads
• Thread execution managers issues threads
• 128 thread processors grouped into 16 streaming multiprocessors (SMs)
• Parallel Data Cache enables thread cooperation.
Load/store
Global Memory
Thread Execution Manager
Input Assembler
Host
Texture Texture Texture Texture Texture Texture Texture Texture Texture
Parallel Data Cache
Parallel Data Cache
Parallel Data Cache
Parallel Data Cache
Parallel Data Cache
Parallel Data Cache
Parallel Data Cache
Parallel Data Cache
Load/store Load/store Load/store Load/store Load/store
GPU
CPU
...
![Page 11: Introduction to GPU Programming Languagesusers.wfu.edu/choss/CUDA/docs/Lecture 3.pdf · Single Instruction, Multiple Data (SIMD) • Element-wise operations on vectors or matrices](https://reader034.fdocuments.in/reader034/viewer/2022042708/5f3a476a45d38c106e3e47c5/html5/thumbnails/11.jpg)
Single Instruction, Multiple Threads (SIMT)
• A version of SIMD used in GPUs.
• GPUs use a thread model to achieve a high parallel performance and hide memory latency.
• On a GPU, 10,000s of threads are mapped on to available processors that all execute the same set of instructions (on different data addresses).
0,0 0,1 0,2 0,3
1,0 1,1 1,2 1,3
2,0 2,1 2,2 2,3
3,0 3,1 3,2 3,3
![Page 12: Introduction to GPU Programming Languagesusers.wfu.edu/choss/CUDA/docs/Lecture 3.pdf · Single Instruction, Multiple Data (SIMD) • Element-wise operations on vectors or matrices](https://reader034.fdocuments.in/reader034/viewer/2022042708/5f3a476a45d38c106e3e47c5/html5/thumbnails/12.jpg)
Is it hard to program on a GPU?
• In the olden days – (pre-2006) – programming GPUs meant either:
• using a graphics standard like OpenGL (which is mostly meant for rendering), or
• getting fairly deep into the graphics rendering pipeline.
• To use a GPU to do general purpose number crunching, you had to make your number crunching pretend to be graphics.
• This is hard. Why bother?
![Page 13: Introduction to GPU Programming Languagesusers.wfu.edu/choss/CUDA/docs/Lecture 3.pdf · Single Instruction, Multiple Data (SIMD) • Element-wise operations on vectors or matrices](https://reader034.fdocuments.in/reader034/viewer/2022042708/5f3a476a45d38c106e3e47c5/html5/thumbnails/13.jpg)
How to Program on a GPU Today
• Proprietary programming language or extensions
• NVIDIA: CUDA (C/C++)
• AMD/ATI: StreamSDK/Brook+ (C/C++)
• OpenCL (Open Computing Language): an industry standard for doing number crunching on GPUs.
• Portland Group Inc (PGI) Fortran and C compilers with accelerator directives; PGI CUDA Fortran (Fortran 90 equivalent of NVIDIA’s CUDA C).
• OpenMP version 4.0 may include directives for accelerators.