GPU Computing Burim Kameri Fachhochschule Hannover (FHH) Institut für Solarforschung Hameln (ISFH)
Inhalt Motivation Sequentielle vs. parallele Programmierung GPGPU – OpenCL Beispiel – Matrix-Skalar-Multiplikation Optimierung Zusammenfassung GPU - Computing
Motivation GPU - Computing
Beispiel: Matrixmultiplikation
Sequentielle vs. parallele Programmierung Sequentielle Programmierung Quelle: https://computing.llnl.gov/tutorials/parallel_comp/ GPU - Computing
Sequentielle vs. parallele Programmierung Quelle: https://computing.llnl.gov/tutorials/parallel_comp/ GPU - Computing
global and constant memory GPGPU - OpenCL „local memory“ ist um 100x-150x schneller als der „global memory“! Zusätzliche Verwendung der GPU für allgemeine Aufgaben memory local memory privat memory global and constant memory Quelle: CUDA C Programming Guide Quelle: http://de.wikipedia.org/wiki/OpenCL GPU - Computing
Beispiel (Matrix-Skalar-Multiplikation) CPU GPU (OpenCL) void multMatrix(float* A, float c, float* B) { for( i = 0;i < 225;i++ ) { B[i] = A[i] * c; } __kernel__ void multMatrix(float* A, float c, float* B) { int idx = get_global_id(0); B[idx] = A[idx] * c; } GPU - Computing
Optimierung GPU - Computing
Zusammenfassung Aufteilung des Domänenproblems Tieferes Verständnis des Domänenproblems nötig Wissen über das Programmiermodell work-items, work-groups, Kernels, Speicherhirachien, etc. Synchronisierung Tiefes Wissen über die GPU-Architektur Shared Memory Kontrollstrukturen mit bedingten Verzweigungen vermeiden GPU - Computing
Dankeschön! Fragen? GPU - Computing