Praktikum/Kurs Multicore und GPU-Programmierung

Dozent:G. Kanschat
Vorlesungsdaten: KVV, LSF,
Email-Liste:Bitte melden Sie sich bei unserer Google Group an, um aktuelle Informationen zu erhalten

Inhalt

In diesem Praktikum lernen wir gemeinsam, was die algorithmischen Anforderungen an die Programmierung moderner Rechnerarchitekturen sind und wie man diese in Programmen umsetzt.

Moderne Prozessorachitekturen beinhalten immer mehrere cores, die parallel Instruktionen ausführen. Während früher jedes Programm mit der Einführung einer neuen Prozessorgeneration schneller wurde, da die Taktrate anstieg, ist dies heute nicht mehr so, da die Taktraten eher fallen. Stattdessen ist es nötig, Algorithmen und Programme zu entwickeln, die immer mehr cores effizient einsetzen können, damit auch zukünftige Rechner ausgenutzt werden können. Zum Beispiel haben Workstations heute ca 100 cores und moderne GPU-Einheiten um 1000-2000, was eine Anpassung der Algorithmik zwingend erforderlich macht.

Anhand von Standardmatrizen, wie sie bei der Lösung partieller Differentialgleichungen auftreten (es ist für die Teilnahme an diesem Praktikum nicht nötig, die Wege der Herleitung dieser Matrizen zu verstehen) untersuchen wir, wie sich Standardalgorithmen verhalten. Basierend auf existierenden Implementationen in C++ werden wir sie in der GPU-Sprache Cuda neu implementieren. Ausgehend von den beobachteten Limitierungen werden wir dann daran gehen, die Algorithmen so umzuformulieren, dass weniger Speicherzugriffe nötig sind. Im Laufe des Praktikums werden wir diverse Techniken erforschen, die zur Effizienzsteigerung dienen können. Experimente werden auf den institutseigenen Rechnern durchgeführt. Neben der eigenen experimentellen Arbeit werden wir auch Arbeiten von Forschern auf dem Gebiet lesen, um weitere Anregungen zu bekommen.

Ankündigungen

Literatur

Hausaufgaben und Programmieraufgaben