Kommentar |
Die Programmierung moderner Grafikkarten (GPU-Computing) ist spätestens seit der Einführung der Compute Unified Device Architecture (CUDA) durch NVIDIA ein wichtiges Hilfsmittel zur Umsetzung rechenintensiver Anwendungen geworden. Da jedoch die Entwicklung effizienter Algorithmen detaillierte Kenntnisse der GPU-Hardware voraussetzt, ist die Programmierung von GPUs weiterhin anspruchsvoll. Zudem basiert CUDA (ebenso wie das neuere OpenCL) auf C. Mehrere Projekte befassen sich mit der Vereinfachung der GPU-Programmierung. Beispielsweise wird an der Integration von CUDA in andere Programmiersprachen (C++, Java) gearbeitet. Besonders interessant sind Ansätze, die das Abstraktionsniveau der GPU-Programmierung erhöhen, z.B. durch abstrakte Datentypen oder algorithmische Skelette. Ein aktuelles Themenfeld ist die Programmierung von GPU-Clustern, also Clustercomputern, deren Knoten GPUs beinhalten. Hierbei müssen mehrere GPUs verwaltet werden. Im Rahmen dieses Projektseminars erlernen die Teilnehmer zunächst die Architektur moderner Grafikkarten, sowie deren Programmierung mit CUDA oder OpenCL. Anschließend sollen aktuelle Projekte und Arbeiten zur Vereinfachung der GPU-Programmierung betrachtet und verglichen werden. Ausgewählte Abstraktionsmechanismen sollen evaluiert und anschließend in einem Framework zusammengefasst werden. |