Frage

Ich sah durch die Programmieranleitung und Best Practices führt und erwähnt, dass globaler Speicherzugriff dauert 400-600 Zyklen. Ich habe nicht viel auf den anderen Speichertypen wie Textur-Cache, konstant Cache, gemeinsam genutzten Speicher. Die Register haben 0 Speicherlatenz.

ich glaube, konstant Cache die gleiche wie Register, wenn alle Threads die gleiche Adresse in konstanten Cache verwenden. Im schlimmsten Fall bin ich nicht so sicher.

Shared-Speicher ist die gleiche wie Register, solange es keine Bankkonflikte? Wenn es dann wie funktioniert entfaltet die Latenz?

Was ist Textur-Cache?

War es hilfreich?

Lösung

Die Latenzzeit auf die gemeinsam genutzten / constant / Texturspeicher ist klein und hängt davon ab, welches Gerät Sie haben. Im Allgemeinen jedoch GPUs sind als Durchsatzarchitektur, die eine Einrichtung ausgebildet ist, dass genug Fäden die Latenz auf die Speicher durch Erzeugen, einschließlich des globalen Speichers, verborgen ist.

Der Grund, die Führungen über die Latenz in dem globalen Speicher sprechen ist, dass die Latenzzeit um Größenordnung höher als die von anderen Erinnerungen bedeutet, dass es die dominante Latenz ist für die Optimierung berücksichtigt werden.

Sie erwähnten konstante Cache im Besonderen. Sie sind ganz richtig, dass, wenn alle Threads innerhalb einer Kette (d Gruppe von 32 Threads) Zugriff auf die gleiche Adresse dann gibt es keine Strafe ist, das heißt der Wert aus dem Cache und Broadcast an alle Threads gleichzeitig gelesen wird. Wenn jedoch Fäden unterschiedlichen Adressen zugreifen dann zugreift, muss serialize , da der Cache nur ein Wert zu einem Zeitpunkt zur Verfügung stellen kann. Wenn Sie die CUDA Profiler verwenden, dann wird dies unter der Serialisierung Zähler angezeigt.

Shared-Speicher, im Gegensatz zu konstanter Cache kann viele höhere Bandbreite zur Verfügung stellen. Schauen Sie sich die CUDA Optimierung Gespräch, um weitere Informationen und eine Erklärung der Bank Konflikte und deren Auswirkungen.

Andere Tipps

(Kepler) Tesla K20 die Latenzen sind wie folgt:

  

Globale Speicher: 440 Uhren
  Constant Speicher
  L1: 48 Uhren
  L2: 120 Uhren
  Shared Memory: 48 Uhren
  Texturspeicher
  L1: 108 Uhren
  L2: 240 Uhren

Wie kann ich wissen? Ich lief die von den Autoren beschrieben Microbenchmarks von Demystifying GPU Mikroarchitektur durch Microbenchmarking . Sie liefern ähnliche Ergebnisse für die ältere GTX 280.

Dies wurde auf einem Cluster Linux gemessen, der Rechenknoten, wo ich die Benchmarks wurde ausgeführt wurde, nicht von anderen Benutzern verwendet oder liefe alle anderen Prozesse. Es ist bullx Linux mit einem Paar von 8-Core-Xeons und 64 GB RAM, NVCC 6.5.12. Ich habe die sm_20 zu sm_35 kompiliert werden kann.

Es gibt auch einen Operanden Kosten Kapitel in PTX ISA obwohl es nicht sehr hilfreich ist, es wiederholt nur, was Sie schon erwarten, ohne genaue Zahlen zu geben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top