Parallelverarbeitung ist ein großes und wichtiges Thema in der Informatik sowie in deren Randgebiete. Schon in den frühen 70er Jahren gab es neben den klassischen CPU auch parallele Rechner.
Einer der Hauptgründe für das Parallelisieren von Programmen ist deren schnellere Ausführung. Hierfür dienen nicht nur die klassischen CPUs von INTEL und AMD sondern auch HPC Karten, die dabei auch eine immer größere Rolle spielen. Einer der bekanntesten Hersteller ist Nvidia aber auch INTEL und AMD haben solche Karten auf dem Markt. Für den Einsatz der Karten kommen spezielle Schnittstellen zum Einsatz, eine davon ist Nvidia CUDA.
Das Ziel der Seminararbeit ist, einen ersten Überblick in die CUDA C Programmierung zu geben.
Im Rahmen dieser Arbeit habe ich mich größtenteils auf die Dokumentation von Nvidia gestützt. Sie gibt einen vollständigen Überblick des Funktionenumfangs und eine kurze Erklärung. Für den genaueren Zusammenhang habe ich vor dem Schreiben der Arbeit ein Buch durchgearbeitet.
Die Seminararbeit ist in vier Kapitel untergliedert. Im zweiten Kapitel wird auf die Theorie und den Aufbau einer GPU eingegangen. Anschließend werden einige Hauptfunktionen von CUDA vorgestellt und zum Schluss kommt das Fazit.
Inhaltsverzeichnis
- Vorwort
- 1 Einleitung
- 2 Einführung CUDA
- 2.1 Historische Entwicklung
- 2.2 Unterscheidung zwischen GPU und CPU
- 2.2.1 Prinzipieller Aufbau einer GPU
- 2.2.2 Single-Instruction, Multiple-Thread Modell
- 2.3 Compute Capaility
- 2.4 Arten von Speicher
- 2.5 Kernel, Threads, Blöcke und Grids
- 3 Programmierung
- 3.1 CUDA-API
- 3.2 Funktionen Deklaration
- 3.3 Ausführen eines Kernel
- 3.4 Nummerierung von Threads
- 3.5 Speicherverwaltung
- 4 Fazit
Zielsetzung und Themenschwerpunkte
Die Seminararbeit bietet eine Einführung in die CUDA C Programmierung und soll einen Überblick über die Funktionsweise und die Anwendungsmöglichkeiten von CUDA für Parallelverarbeitung auf Nvidia Grafikkarten geben. Die Arbeit konzentriert sich auf die Architektur von GPUs, die Unterschiede zu CPUs, sowie die Funktionsweise der CUDA-API.
- Historische Entwicklung und Motivation von CUDA
- Architektur und Funktionsweise von GPUs
- Unterschiede zwischen GPU und CPU
- Grundlagen der Parallelverarbeitung mit CUDA
- Anwendungen und Einsatzmöglichkeiten von CUDA
Zusammenfassung der Kapitel
Das zweite Kapitel befasst sich mit der Einführung von CUDA und beleuchtet die historische Entwicklung sowie die Unterschiede zwischen GPUs und CPUs. Es wird der prinzipielle Aufbau einer GPU und das Single-Instruction, Multiple-Thread Modell erklärt. Außerdem werden wichtige Konzepte wie Compute Capaility, Speichertypen und die Funktionsweise von Kernel, Threads, Blöcken und Grids vorgestellt.
Im dritten Kapitel wird die Programmierung mit der CUDA-API behandelt. Es werden Themen wie Funktionen Deklaration, Ausführen von Kernel, Nummerierung von Threads und Speicherverwaltung erläutert.
Schlüsselwörter
CUDA, GPU, CPU, Parallelverarbeitung, Grafikkarte, Compute Capaility, Speicher, Kernel, Threads, Blöcke, Grids, CUDA-API, Funktionen Deklaration, Ausführen von Kernel, Nummerierung von Threads, Speicherverwaltung
- Quote paper
- Edem Kiessig (Author), 2015, Einführung in die "CUDA" (Compute Unified Device Architecture) Programmierung. Parallelverarbeitung von Programmen in der Informatik, Munich, GRIN Verlag, https://www.grin.com/document/374980