Hyper-Q und MPI

Experimente mit Nvidia Tesla K20X

Praxis & Tipps | Praxis

Die einstmals für Grafik gedachten GPUs entwickeln immer mehr ihre Fähigkeiten in Richtung Allzweck-Prozessor. Unter anderem kann Nvidias Kepler-Chip mit Hyper-Q nun gleich mehrere Jobs, hier Streams genannt, gleichzeitig auf einem Chip ablaufen lassen. Wir haben ausprobiert, wie sich das in Verbindung mit MPI so anfühlt.

Bei mehrkernigen CPUs ist ein Multiprocessing schon lange selbstverständlich, bei GPUs war das bislang jedoch nicht oder nur sehr eingeschränkt möglich. Hier mussten die Jobs brav einer nach dem anderen ausgeführt werden, selbst wenn einige Teilaufgaben – die sogenannten Kernels – nur einen einzigen Rechenkern, die bei Nvidia SMX heißen, benötigen. Ein wenig Parallelität ist – anders als es Nvidias schöne Grafik darstellt – aber schon seit einiger Zeit ab den Fermi-Chips möglich. Hier ist es möglich, den ersten Kernel eines Streams mit dem letzten des vorangehenden zu überlappen. Doch mit Hyper-Q können, nur minimal zeitlich versetzt, voneinander unabhängige Streams voll parallel laufen, sofern noch Ressourcen auf der Karte frei sind. Der Hyper-Q-Scheduler kann dabei auch die Streams umorganisieren, um die Slots besser zu füllen.

Streams im Griff

De facto hat man also drei verschiedene Streaming-Modi, für die jeweils unterschiedlich zu programmieren ist: Voll seriell, zweifach parallel und – abhängig von den vorhandenen Ressourcen – n-fach parallel. Bei unseren früheren Experimenten mit der Tesla K20 unter Windows [1] nutzten wir die CuBLAS-Bibliothek mit synchronen Aufrufen, wobei dann keine Überlappungen möglich sind. So blieben die real gemessenen Performancewerte deutlich unter den theoretisch möglichen – das sollte mit Hyper-Q viel besser werden. ...

Sie möchten wissen, wie es weitergeht?

Als c't-Plus-Abonnent gratis lesen

Anmelden als c't-Plus-Abonnent

Anzeige
Anzeige