110 likes | 316 Views
Παράλληλη/Κατανεμημένη Επεξεργασία και Εφαρμογές. Εισαγωγή στην Compute Unified Device Architecture (CUDA). Περιεχόμενα. Εισαγωγή Εφαρμογές Τι χρειαζόμαστε Αρχιτεκτονική Hello CUDA ! Πρόσθεση 2 πινάκων Performance. Εισαγωγή.
E N D
Παράλληλη/Κατανεμημένη Επεξεργασία και Εφαρμογές Εισαγωγή στην Compute Unified Device Architecture (CUDA)
Περιεχόμενα • Εισαγωγή • Εφαρμογές • Τι χρειαζόμαστε • Αρχιτεκτονική • Hello CUDA! • Πρόσθεση 2 πινάκων • Performance
Εισαγωγή • Πρώτη προσπάθεια προγραμματισμού σε Graphical Processing Units (GPUs) ήταν το OpenGL • Νοέμβριος 2006: GeForce 8800 GTX • Πρώτη GPU με CUDA • Όλα τα νεότερα μοντέλα καρτών γραφικών υποστηρίζουν το CUDA
Εφαρμογές • Επιστήμη των υλικών • Φυσική • Κβαντική Χημεία • Σεισμολογία • Πρόβλεψη καιρού • Και πολλές άλλες • http://www.nvidia.com/object/gpu-applications.html
Τι χρειαζόμαστε • Μία κάρτα γραφικών που να υποστηρίζει CUDA • Ένανdriver της NVIDIA • CUDA Toolkit • C compiler
Αρχιτεκτονική Fermi • 512 cores • 3 billion transistors • 16 SM x 32 cores each • Up to 6 GB memory • PCI-Express connection
Αρχιτεκτονική SM • 32 cores • 16 Load/Store units • 4 SFUs • 64 KB shared memory
Hello CUDA! #include <stdio.h> __global__ void helloCUDA(void) { printf("Hello thread %d\n", threadIdx.x); } int main() { helloCUDA<<<1, 5>>>(); cudaDeviceSynchronize(); return 0; } • nvcc-arch=sm_20 hello.cu –run Hello thread 0 Hello thread 1 Hello thread 2 Hello thread 3 Hello thread 4
Performance • Αποφεύγετε την χρήση if statements • 1 block τρέχει σε έναν multiprocessor • Maximum number of threads per block 1024 • Warp size: 32 threads (running concurrently in SM) • Each processor executes a single thread • SIMT
Αναφορές • CUDA by example, An introduction to General-Purpose GPU Programming, Jason Sanders, Edward Kandrot, Addison Wesley, 2011 • http://www.techspot.com/review/263-nvidia-geforce-gtx-480/page2.html • http://www.geeks3d.com/20100118/nvidia-gf100-architecture-details/ • http://www.math.bas.bg/~nkirov/2004/Horstman/ch09/ch09.html