0Pricing
CUDA Academy · Lektion

Peer-to-Peer-Speicherzugriff

Direkte Kopien von GPU zu GPU über NVLink

Peer-to-Peer-Speicherzugriff 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.

Der langsame Umweg

Daten von einer GPU auf eine andere zu verschieben bedeutet normalerweise, dass sie zunächst über den Speicher der CPU geleitet werden. Dieser Hin- und Rückweg ist langsam und verschwendet die Bandbreite des Hosts.

GPUs kommunizieren direkt

Moderne GPUs können die CPU vollständig umgehen. Der Peer-to-Peer-Zugriff ermöglicht es einer GPU, den Speicher einer anderen GPU über eine direkte Verbindung zu lesen und zu beschreiben.

Die NVLink-Schnellstraße

Die schnelle Verbindung zwischen den Karten ist häufig NVLink, das deutlich schneller als der gemeinsam genutzte PCIe-Bus ist. P2P-Übertragungen nutzen diese Schnellstraße, sofern sie verfügbar ist.

Vorher prüfen

Nicht jedes GPU-Paar unterstützt P2P. Prüfen Sie dies zunächst mit cudaDeviceCanAccessPeer, das meldet, ob ein Gerät ein anderes erreichen kann.

int can;
cudaDeviceCanAccessPeer(&can, 0, 1);

Zugriff aktivieren

Die Berechtigung ist standardmäßig deaktiviert. Rufen Sie, während GPU 0 aktuell ist, cudaDeviceEnablePeerAccess auf, damit GPU 0 auf den Speicher von GPU 1 zugreifen kann.

cudaSetDevice(0);
cudaDeviceEnablePeerAccess(1, 0);

Zugriff ist unidirektional

Das Aktivieren des Peer-Zugriffs gewährt nur die angeforderte Richtung. Damit GPU 1 GPU 0 lesen kann, müssen Sie diese Richtung ebenfalls von Gerät 1 aus aktivieren.

Peer-to-Peer kopieren

Um einen Puffer direkt zwischen Karten zu verschieben, verwenden Sie cudaMemcpyPeer. Sie geben den Zielzeiger und das Zielgerät sowie den Quellzeiger und das Quellgerät an.

cudaMemcpyPeer(dst, 1, src, 0, bytes);

Kernel über Geräte hinweg lesen lassen

Bei aktiviertem Zugriff kann ein Kernel auf GPU 0 einen Zeiger dereferenzieren, der auf GPU 1 liegt. Die Hardware ruft ihn transparent über die Peer-Verbindung ab.

Wenn P2P nicht verfügbar ist

Wenn zwei Karten keine Peer-Verbindung herstellen können, greift die Laufzeitumgebung unauffällig auf eine Zwischenlagerung im Host-Speicher zurück. Sie erhalten weiterhin eine Kopie, jedoch mit der langsameren PCIe-Geschwindigkeit.

Asynchrone Peer-Kopien

Peer-Übertragungen können mit anderer Arbeit überlappen. Kombinieren Sie cudaMemcpyPeerAsync mit einem Stream, damit die Kopie ausgeführt wird, während die Kernel weiterrechnen.

cudaMemcpyPeerAsync(dst, 1, src, 0, bytes, stream);

Nach Abschluss deaktivieren

Der Peer-Zugriff verwendet Ressourcen. Geben Sie diese daher nach Abschluss frei. cudaDeviceDisablePeerAccess baut die zuvor geöffnete Verbindung wieder ab.

cudaDeviceDisablePeerAccess(1);

Schnelltest

Rufen Sie sich den Vorteil des Peer-to-Peer-Zugriffs zwischen zwei GPUs in Erinnerung.

Zusammenfassung

P2P ermöglicht GPUs, Speicher direkt gemeinsam zu nutzen, idealerweise über NVLink. Prüfen Sie die Unterstützung, aktivieren Sie den Zugriff für jede Richtung und verwenden Sie anschließend cudaMemcpyPeer. Als Nächstes: Skalierung mit NCCL. ✨

Häufig gestellte Fragen

Ist die Lektion „Peer-to-Peer-Speicherzugriff“ kostenlos?

Ja — der vollständige Text von „Peer-to-Peer-Speicherzugriff“ 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 „Peer-to-Peer-Speicherzugriff“?

Direkte Kopien von GPU zu GPU über NVLink 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 „Peer-to-Peer-Speicherzugriff“?

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. Geräte aufzählen und auswählen
  2. Arbeit auf mehrere GPUs verteilen
  3. Peer-to-Peer-Speicherzugriff
  4. Multi-GPU mit NCCL
← Zurück zu CUDA Academy