GPU-Programmierung

Bei welchem Zugriff arbeitet der Constant Memory von CUDA besonders schnell?

  1. AWenn alle Threads eines Warps dieselbe Adresse lesen (ein Lesezugriff kann an alle verteilt werden)
  2. BWenn die Threads eines Warps jeweils auf unterschiedliche Adressen schreiben
  3. CWenn die Threads eines Warps jeweils zufällig unterschiedliche Adressen lesen
Antwort und Erläuterung anzeigen

Antwort: A. Wenn alle Threads eines Warps dieselbe Adresse lesen (ein Lesezugriff kann an alle verteilt werden)

Der Constant Memory ist ein kleiner Bereich, der während der Kernel-Ausführung nicht überschrieben wird und einen eigenen Cache besitzt. Lesen alle Threads eines Warps dieselbe Adresse, kann das Ergebnis eines einzigen Lesezugriffs gleichzeitig an alle verteilt werden, sodass sehr schnell gelesen wird. Er eignet sich, wenn alle Threads denselben Wert verwenden, etwa Koeffizienten von Bildfiltern oder Parameter physikalischer Simulationen. Bei verstreuten Adressen zerfällt der Lesezugriff, und es wird eher langsamer.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu GPU-Programmierung

  1. Welche Aussage zu den Caches der GPU im Vergleich zur CPU ist im Allgemeinen richtig?
  2. 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?
  3. 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?
  4. Welche Voraussetzung gilt es beim Schreiben von GPU-Kerneln zu beachten?
  5. Was ist der Hauptzweck, beim Transponieren einer großen Matrix auf der GPU (b[j][i] = a[i][j]) über den Shared Memory zu gehen?

Vergleiche zu diesem Thema