GPU-Programmierung

Was bestimmt hauptsächlich die Leistung bei der elementweisen Addition zweier großer Arrays auf der GPU (c[i] = a[i] + b[i])?

  1. ADie Speicherbandbreite (da pro Element 12 Byte gelesen und geschrieben werden, die Berechnung aber nur aus einer Addition besteht)
  2. BDie Zahl der Recheneinheiten
  3. CAllein die Taktfrequenz
Antwort und Erläuterung anzeigen

Antwort: A. Die Speicherbandbreite (da pro Element 12 Byte gelesen und geschrieben werden, die Berechnung aber nur aus einer Addition besteht)

Für eine float-Addition werden je 4 Byte von a und b gelesen und 4 Byte nach c geschrieben, also 12 Byte Transfer für eine Operation. Die GPU kann mehrere zehn Billionen Operationen pro Sekunde ausführen, die Speicherbandbreite beträgt aber nur einige TB/s, sodass die Obergrenze dieser Verarbeitung durch die Bandbreite gesetzt wird. Zur Beschleunigung solcher Verarbeitungen helfen die Verringerung der Zahl der Lese- und Schreibzugriffe oder das Fusionieren mehrerer Verarbeitungen, sodass Zwischenergebnisse nicht in den Speicher geschrieben werden.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu GPU-Programmierung

  1. Was ist der wahrscheinlichste Grund, weshalb bei vielen GPUs für Heimspiele die Rechenleistung in doppelter Genauigkeit (FP64) viel niedriger ist als in einfacher Genauigkeit (FP32), z. B. um ein Vielfaches von zehn?
  2. Welche Aussage zu Tensor Cores (Matrixrecheneinheiten) in neueren GPUs ist richtig?
  3. Warum wird bei gemischter Genauigkeit auf der GPU häufig die Multiplikation in niedriger Genauigkeit wie FP16 und die Aufsummierung (Akkumulation) in FP32 ausgeführt?
  4. Bei der Summierung derselben Gleitkommadaten auf der GPU unterschied sich die letzte Stelle des Ergebnisses bei jeder Ausführung geringfügig. Was ist die wahrscheinlichste Ursache?
  5. Was ist ein üblicher Richtwert für die Zahl der Threads pro Block in CUDA?

Vergleiche zu diesem Thema