CUDA Academy · Lektion

Hinweise mit cudaMemAdvise

Steuern Sie die Entscheidungen des Treibers zur Speicherplatzierung.

Lektion 4 von 413 Schritte

Hinweise mit cudaMemAdvise 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.

Hinweisen statt anweisen

Prefetch verschiebt Daten sofort; cudaMemAdvise teilt dem Treiber dagegen mit, wie Sie einen Bereich voraussichtlich verwenden werden, damit er Seiten langfristig sinnvoll platzieren kann.

Aufbau des Aufrufs

Sie übergeben den Pointer, die Byte-Anzahl, ein advice-Flag und eine Geräte-ID. Der Treiber bezieht diesen Hinweis in seine künftigen Migrationsentscheidungen ein.

cudaMemAdvise(data, bytes, advice, device);

ReadMostly für gemeinsames Lesen

Verwenden Sie cudaMemAdviseSetReadMostly für Daten, die von vielen Geräten gelesen, aber selten geschrieben werden. Der Treiber kann schreibgeschützte Kopien auf jeder Seite behalten und so Migrationen vermeiden.

cudaMemAdvise(data, bytes,
  cudaMemAdviseSetReadMostly, dev);

PreferredLocation legt einen bevorzugten Ort fest

Mit cudaMemAdviseSetPreferredLocation bestimmen Sie ein bevorzugtes Gerät für die Seiten. Sie werden dort gehalten, auch wenn ein anderes Gerät darauf zugreift.

cudaMemAdvise(data, bytes,
  cudaMemAdviseSetPreferredLocation, dev);

AccessedBy vermeidet Migration

cudaMemAdviseSetAccessedBy gibt an, dass ein Gerät auf diesen Bereich zugreifen wird, sodass der Treiber ihn dort abbildet. Der Zugriff erfolgt über den Bus, statt die Seiten zu verschieben.

cudaMemAdvise(data, bytes,
  cudaMemAdviseSetAccessedBy, dev);

Hinweise stoppen das Hin-und-her

Wenn zwei Geräte um dieselben Seiten konkurrieren, beendet der richtige Hinweis das Hin-und-her. Sie stabilisieren die Platzierung, sodass die Daten nicht mehr ständig hin und her migriert werden.

Hinweise bleiben bestehen

Im Gegensatz zu einem einmaligen Prefetch bleibt ein Hinweis für den Bereich bestehen, bis Sie ihn ändern. Er beeinflusst jede Migrationsentscheidung während der gesamten Lebensdauer des Buffers.

Jeder Hinweis kann aufgehoben werden

Zu jedem Set-Flag gibt es eine passende Unset-Variante, mit der Sie den Hinweis zurücknehmen. Löschen Sie den Hinweis, wenn sich das Zugriffsmuster ändert, damit er den Treiber nicht in die Irre führt.

cudaMemAdvise(data, bytes,
  cudaMemAdviseUnsetReadMostly, dev);

Hinweis plus Prefetch

Die beiden Werkzeuge ergänzen sich gut. Setzen Sie PreferredLocation, um den bevorzugten Ort festzulegen, und prefetchen Sie anschließend die Daten dorthin. So stabilisieren sich die Migrationen zu einem gleichmäßigen Muster.

Letztlich nur ein Hinweis

Merken Sie sich die Bezeichnung: Ein Hinweis ist eine Empfehlung, keine Garantie. Der Treiber kann ihn außer Kraft setzen. Prüfen Sie daher immer per Profiling, ob die Platzierung tatsächlich geholfen hat.

Ihr Werkzeugkasten für Unified Memory

Sie verfügen nun über drei Stellschrauben: einen verwalteten Pointer, Prefetch für das Timing und Advice für die Platzierung. Zusammen machen sie Unified Memory zugleich einfach und schnell.

Kurze Prüfung

Bestätigen wir, wie sich cudaMemAdvise vom Prefetching unterscheidet.

Zusammenfassung: Memory Advice

Sie haben Hinweise von cudaMemAdvise wie ReadMostly, PreferredLocation und AccessedBy kennengelernt, mit denen sich die Platzierung von Seiten steuern lässt. Kombinieren Sie sie mit Prefetching und Profiling. Sehr gut! 🎯

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 „Hinweise mit cudaMemAdvise“ kostenlos?

Ja — der vollständige Text von „Hinweise mit cudaMemAdvise“ 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 „Hinweise mit cudaMemAdvise“?

Steuern Sie die Entscheidungen des Treibers zur Speicherplatzierung. 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 „Hinweise mit cudaMemAdvise“?

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. Ein Pointer, beide Seiten
  2. Seit迁移 bei Bedarf
  3. Prefetching mit cudaMemPrefetchAsync
  4. Hinweise mit cudaMemAdvise
← Zurück zu CUDA Academy