GPU-Programmierung

Was ist ein üblicher Richtwert für die Zahl der Threads pro Block in CUDA?

  1. AEin Vielfaches der Warp-Größe von 32 (z. B. 128 oder 256)
  2. BStets 1
  3. CStets eine Primzahl
Antwort und Erläuterung anzeigen

Antwort: A. Ein Vielfaches der Warp-Größe von 32 (z. B. 128 oder 256)

Die Threads eines Blocks werden in Warps zu je 32 aufgeteilt; bei z. B. 100 Threads nutzt der letzte Warp nur 4 Threads, und die Ausführungsplätze der übrigen 28 sind verschwendet. Bei einem Vielfachen von 32 sind alle Warps voll ausgelastet. In der Praxis werden häufig etwa 128 bis 256 Threads verwendet und unter Beachtung von Occupancy und Nutzung des Shared Memory angepasst.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu GPU-Programmierung

  1. Welchen Vorteil hat es, einen Kernel wie oben mit einer Schleife (Grid-Stride-Loop) zu schreiben?
  2. Bei welchem Zugriff arbeitet der Constant Memory von CUDA besonders schnell?
  3. Welche Aussage zu den Caches der GPU im Vergleich zur CPU ist im Allgemeinen richtig?
  4. Welches ist ein Beispiel für einen Programmiermechanismus für paralleles Rechnen auf GPUs usw., der auch auf anderen GPUs als denen von NVIDIA verwendet werden kann?
  5. Auf der GPU sollen nur die Elemente eines Arrays, die eine Bedingung erfüllen, herausgenommen und kompakt in ein anderes Array geschrieben werden (jeder Thread gibt 0 oder 1 Wert aus). Welche parallele Berechnung wird häufig verwendet, um die Schreibadresse jedes Threads zu bestimmen?

Vergleiche zu diesem Thema