CUDA Academy · Lektion

Die effektive Bandbreite messen

Vergleichen Sie den erreichten mit dem maximalen Durchsatz.

Lektion 4 von 413 Schritte

Die effektive Bandbreite messen ist eine kostenlose CUDA Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des CUDA Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der CUDA Academy-Kurs umfasst insgesamt 4 Lektionen.

Von der Theorie zu Zahlen

Koaleszierung hilft, aber Sie sollten den Effekt nachweisen. Die aussagekräftige Kennzahl ist die effektive Bandbreite Ihres Kernels in Gigabyte pro Sekunde.

Was „effektiv“ bedeutet

Die effektive Bandbreite ergibt sich aus den Bytes, die Ihr Kernel tatsächlich benötigt, geteilt durch die dafür benötigte Zeit. Sie spiegelt die nützliche Arbeit wider, nicht die verschwendeten Cache-Zeilen.

Die einfache Formel

Addieren Sie die gelesenen und die geschriebenen Bytes und teilen Sie die Summe durch die verstrichenen Sekunden. Dieses Verhältnis ist Ihr erzielter Durchsatz.

double gbps = (bytesRead + bytesWritten) / seconds / 1e9;

Mit Events messen

Verwenden Sie CUDA-Events, um den Kernel zeitlich einzugrenzen. Damit messen Sie die GPU-Arbeit präzise, ohne die Störungen durch CPU-seitige Uhren.

cudaEventRecord(start);
myKernel<<<g, b>>>(...);
cudaEventRecord(stop);

Die verstrichene Zeit ablesen

Warten Sie auf das Stop-Event und fragen Sie CUDA nach der Zeitdifferenz. Das Ergebnis wird in Millisekunden zurückgegeben. Teilen Sie es daher durch tausend, bevor Sie es in die Formel einsetzen.

float ms;
cudaEventElapsedTime(&ms, start, stop);

Die Byteanzahl kennen

Für C = A + B über n Gleitkommazahlen lesen Sie 2n Werte und schreiben n Werte, also werden 3n Gleitkommazahlen bewegt. Multiplizieren Sie mit vier, um die bewegten Bytes zu erhalten.

size_t bytes = 3 * n * sizeof(float);

Die Spitzenbandbreite ermitteln

Jede GPU gibt eine theoretische Spitzenbandbreite an. Ihre effektive Bandbreite ist nur als Bruchteil dieses Grenzwerts sinnvoll.

Das Effizienzverhältnis

Teilen Sie die effektive durch die Spitzenbandbreite, um einen Prozentsatz zu erhalten. Koaleszierte, speichergebundene Kernel erreichen häufig 70 bis 90 Prozent der Spitzenbandbreite; stridierte Kernel liegen deutlich darunter.

Zuerst aufwärmen

Der erste Start verursacht einmalige Einrichtungskosten. Führen Sie den Kernel einmal zum Aufwärmen aus und bilden Sie anschließend den Durchschnitt mehrerer Messungen, um einen stabilen Wert zu erhalten.

Profiler zur Bestätigung verwenden

Nsight Compute meldet den Speicherdurchsatz direkt, sodass Sie Ihre Berechnung überprüfen können. Außerdem weist es auf verschwendete Bytes durch schlechte Koaleszierung hin. 🔧

Damit Entscheidungen treffen

Ein niedriges Verhältnis bedeutet, dass der Speicher Ihr Engpass ist. Konzentrieren Sie sich daher auf Koaleszierung und Layout. Bei einem hohen Verhältnis sollten Sie an anderer Stelle nach mehr Geschwindigkeit suchen.

Schnelltest

Berechnen Sie eine effektive Bandbreite.

Zusammenfassung

Sie können nun mithilfe von Events die effektive Bandbreite messen, sie mit der Spitzenbandbreite vergleichen und anhand des Verhältnisses entscheiden, ob der Speicher Ihr Engpass ist. 🎉

Kostenlos starten

Lerne C++ mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
30
Lektionen
120

Häufig gestellte Fragen

Ist die Lektion „Die effektive Bandbreite messen“ kostenlos?

Ja — der vollständige Text von „Die effektive Bandbreite messen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des CUDA Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der CUDA Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Die effektive Bandbreite messen“?

Vergleichen Sie den erreichten mit dem maximalen Durchsatz. Du übst CUDA Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um CUDA Academy zu starten?

Keine Vorkenntnisse erforderlich. CUDA Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Die effektive Bandbreite messen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser CUDA Academy-Lektion Code schreiben und ausführen?

Ja. Jede CUDA Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Was eine Speichertransaktion ist
  2. Koaleszierte vs. gestridete Lesezugriffe
  3. Structure of Arrays vs. Array of Structs
  4. Die effektive Bandbreite messen
← Zurück zu CUDA Academy