Events für Zeitmessung und Synchronisierung
Verwenden Sie cudaEvent, um Arbeit zu messen und zu ordnen.
Events für Zeitmessung und Synchronisierung ist eine kostenlose CUDA Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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.
Was ist ein Event
Ein CUDA-Event ist eine Markierung, die Sie in einen Stream einfügen. Die GPU zeichnet auf, wann sie diesen Punkt erreicht, sodass Sie Arbeit messen und ordnen können. ⏱️
Das Event-Handle
Events verwenden wie Streams ein cudaEvent_t-Handle. Sie erstellen, protokollieren und fragen es ab und zerstören es anschließend.
cudaEvent_t start, stop;Events erstellen
Rufen Sie für jedes benötigte Event cudaEventCreate auf. Für die Zeitmessung benötigen Sie normalerweise zwei: eines vor der Arbeit und eines danach.
cudaEventCreate(&start);
cudaEventCreate(&stop);Ein Event protokollieren
cudaEventRecord fügt das Event in einen Stream ein. Die GPU versieht es mit einem Zeitstempel, sobald sie alles zuvor Eingereihte abgeschlossen hat.
cudaEventRecord(start, stream);Die Laufzeit eines Kernels messen
Protokollieren Sie den Start, starten Sie Ihren Kernel und protokollieren Sie anschließend das Ende – alles im selben Stream. Der Abstand dazwischen ist die tatsächliche GPU-Ausführungszeit.
cudaEventRecord(start, s);
kernel<<<g, b, 0, s>>>(d);
cudaEventRecord(stop, s);Auf ein Event warten
Events sind asynchron, daher muss der Host warten. cudaEventSynchronize blockiert, bis das angegebene Event tatsächlich auf der GPU protokolliert wurde.
cudaEventSynchronize(stop);Vergangene Zeit messen
cudaEventElapsedTime gibt die Millisekunden zwischen zwei protokollierten Events zurück. Das ist deutlich genauer als eine CPU-Uhr auf dem Host.
float ms;
cudaEventElapsedTime(&ms, start, stop);Warum nicht die CPU-Uhr
Host-Timer enthalten den Startaufwand und erfassen die tatsächliche GPU-Zeit nicht. Events befinden sich innerhalb des Streams und messen daher genau, was das Gerät ausgeführt hat.
Reihenfolge über Streams hinweg
Events können Streams auch synchronisieren. cudaStreamWaitEvent lässt einen Stream pausieren, bis ein in einem anderen Stream protokolliertes Event eingetreten ist.
cudaStreamWaitEvent(streamB, eventA, 0);Abhängigkeiten erstellen
Mit stream-wait-event drücken Sie eine Abhängigkeit aus: streamB beginnt seine Arbeit erst, nachdem streamA sein Event erreicht hat, ohne den Host zu blockieren.
Events aufräumen
Geben Sie nicht mehr benötigte Events mit cudaEventDestroy frei. Wie Streams sind sie zwar kostengünstig, sollten in langlebigen Anwendungen aber nicht undicht werden.
cudaEventDestroy(start);
cudaEventDestroy(stop);Kurzer Test
Welche Funktion liefert die Zeit zwischen zwei Events?
Zusammenfassung
Events ermöglichen es Ihnen, GPU-Arbeit präzise zu messen und einen Stream nach einem anderen zu ordnen. Sie sind Ihr Werkzeug zum Messen und Koordinieren von Überlappung. 🎯
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 „Events für Zeitmessung und Synchronisierung“ kostenlos?
Ja — der vollständige Text von „Events für Zeitmessung und Synchronisierung“ 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 „Events für Zeitmessung und Synchronisierung“?
Verwenden Sie cudaEvent, um Arbeit zu messen und zu ordnen. 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 3 von 4.
Wie lange dauert die Lektion „Events für Zeitmessung und Synchronisierung“?
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
- Die Falle des Standard-Streams
- Streams erstellen und verwenden
- Events für Zeitmessung und Synchronisierung
- Kopieren und Berechnen überlappen