GPU-Programmierung

Welche Aussage zum Unterschied zwischen dem SIMT-Verfahren (Single Instruction, Multiple Threads) der GPU und SIMD-Befehlen der CPU ist richtig?

  1. ASIMT führt mehrere Anweisungen gleichzeitig auf einem Datum aus, SIMD wendet eine Anweisung auf ein Datum an
  2. BSIMT und SIMD sind genau dasselbe und unterscheiden sich nur im Namen
  3. CBei SIMT lässt sich jeder Thread als unabhängiges Programm schreiben, und die Hardware übernimmt auch Verzweigungen, während bei SIMD Programmierer oder Compiler explizit Vektorbefehle fester Breite verwenden
Antwort und Erläuterung anzeigen

Antwort: C. Bei SIMT lässt sich jeder Thread als unabhängiges Programm schreiben, und die Hardware übernimmt auch Verzweigungen, während bei SIMD Programmierer oder Compiler explizit Vektorbefehle fester Breite verwenden

Bei SIMD der CPU wird eine Anweisung auf ein Vektorregister angewendet, das z. B. 4 oder 8 Daten bündelt; das Programm wird daher mit Blick auf die Vektorbreite geschrieben. Bei SIMT der GPU schreibt der Programmierer die Verarbeitung eines einzelnen Threads ganz normal, und die Hardware bündelt je 32 Threads zur Ausführung mit derselben Anweisung. Threads dürfen verzweigen, und die Hardware führt die verzweigten Pfade nacheinander aus, wobei die Effizienz sinkt.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu GPU-Programmierung

  1. Innerhalb eines Warps teilt sich durch eine bedingte Verzweigung eine Hälfte der Threads auf die if-Seite und die andere Hälfte auf die else-Seite auf (Warp Divergence). Wie wird dies im Allgemeinen ausgeführt?
  2. Beide Varianten (1) und (2) oben lassen eine Hälfte der Threads A und die andere Hälfte B ausführen. Welche Aussage zur Warp-Effizienz ist richtig (ein Warp habe 32 Threads)?
  3. Welche Aussage zum Memory Coalescing der GPU ist richtig?
  4. Wird, wie oben gezeigt, mit der Thread-Nummer i ein Array in Abständen von 32 Elementen gelesen, ist dies langsamer als das Lesen von a[i]. Was ist der Hauptgrund?
  5. Welche Anordnung ist unter dem Gesichtspunkt des Memory Coalescing vorteilhaft, wenn Daten mit den Partikelpositionen x, y, z auf der GPU verarbeitet werden?

Vergleiche zu diesem Thema