GPU-Programmierung

Welche Aussage zum Memory Coalescing der GPU ist richtig?

  1. ADer Speicher zweier GPUs wird zu einem zusammengefasst und die Kapazität verdoppelt
  2. BDie Daten im Speicher werden komprimiert, um die Kapazität zu erhöhen
  3. CLesen benachbarte Threads eines Warps benachbarte Adressen, genügen wenige Speicherzugriffe für das gebündelte Lesen
Antwort und Erläuterung anzeigen

Antwort: C. Lesen benachbarte Threads eines Warps benachbarte Adressen, genügen wenige Speicherzugriffe für das gebündelte Lesen

Der Speicher der GPU wird in zusammenhängenden Einheiten wie 32 oder 128 Byte gelesen und geschrieben. Lesen die 32 Threads eines Warps jeweils 4 Byte aus aufeinanderfolgenden Adressen, können insgesamt 128 Byte in einem bis wenigen Zugriffen gelesen werden. Sind die Adressen verstreut, liest jeder Thread einen anderen Block, und es werden auch nicht benötigte Daten transportiert, sodass die effektive Bandbreite auf einen Bruchteil sinkt.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu GPU-Programmierung

  1. 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?
  2. Welche Anordnung ist unter dem Gesichtspunkt des Memory Coalescing vorteilhaft, wenn Daten mit den Partikelpositionen x, y, z auf der GPU verarbeitet werden?
  3. Welche Aussage zum Shared Memory von CUDA ist richtig?
  4. Welche Funktion hat __syncthreads() in CUDA?
  5. In CUDA wurde __syncthreads() innerhalb von „if (threadIdx.x < 16)“ geschrieben, sodass nur ein Teil der Threads es durchläuft. Was kann geschehen?

Vergleiche zu diesem Thema