Glossar · Netzwerk und Multi-Node
Wissensstufe: FortgeschrittenRDMA
RDMA (Remote Direct Memory Access) lässt einen Rechner über das Netzwerk direkt im Speicher eines anderen Rechners lesen und schreiben, ohne dessen CPU zu belasten.
Auch: Remote Direct Memory Access
Einfach erklärt
Ohne RDMA muss jemand am Zielrechner jede eingehende Lieferung annehmen, auspacken und einräumen. Mit RDMA hat der Absender einen Schlüssel zu einem vereinbarten Fach und legt die Daten selbst hinein. Der Empfänger wird dabei nicht unterbrochen.
Was technisch passiert
Beim üblichen Netzwerkverkehr durchlaufen Daten auf beiden Seiten den Netzwerkstapel des Betriebssystems. Der Kernel nimmt Pakete entgegen, kopiert sie zwischen Puffern und reicht sie an die wartende Anwendung weiter. Jeder dieser Schritte kostet Rechenzeit und verlängert den Weg.
RDMA verlagert diese Arbeit in die Netzwerkkarte. Eine Anwendung gibt zunächst einen Speicherbereich bekannt; die Spezifikation RFC 5040 nennt das die Ankündigung eines Puffers an die Gegenseite. Danach kann die Gegenseite mit RDMA Write gezielt in diesen Bereich schreiben oder mit RDMA Read aus ihm lesen. Die Daten landen dabei ohne Zwischenkopie direkt im Puffer der Anwendung. Laut RFC 5040 entfallen so Kopiervorgänge, Latenzen sinken, und eine Umsetzung kann den Kernel umgehen. Fachlich spricht man von Kernel-Bypass und Zero-Copy.
Über abgeschlossene Übertragungen informiert die Netzwerkkarte die Anwendung über eigene Warteschlangen, die Completion Queues. Bei der Kommunikation zwischen GPUs muss eine Anwendung diese Schnittstelle nicht selbst bedienen; das kann eine Bibliothek wie NCCL übernehmen, die InfiniBand-Verbs als Transport unterstützt.
Für den Transport gibt es mehrere Varianten: InfiniBand als eigenes Netz, RoCE über Ethernet und iWARP, das laut RFC 5040 oberhalb von TCP oder SCTP arbeitet.
In der Praxis
Auf der Projektseite zum Vier-Spark-Verbund von AI SolutionX heißt es, dass die Synchronisationsschritte All-Reduce und All-Gather direkt über RDMA laufen, ohne Umweg über CPU und Betriebssystem-Stack. Das ist bei Tensor Parallelism wichtig, weil die vier GB10-Systeme für jedes erzeugte Token Teilergebnisse austauschen. Die Projektseite hält fest, dass gerade diese kleinen Transfers über die Latenz entscheiden.
Wann ist das sinnvoll?
- Wenn Rechner in kurzen Abständen viele kleine Nachrichten austauschen und jede Mikrosekunde Wartezeit zählt.
- Wenn die CPU für andere Arbeit frei bleiben soll, statt Netzwerkpakete zu verarbeiten.
- Wenn verteilte Software ohnehin über Bibliotheken kommuniziert, die RDMA unterstützen, sodass kein eigener Programmieraufwand entsteht.
- Für gewöhnliche Web- und Bürodienste ist kein RDMA-Netz nötig; dort genügt herkömmliches TCP/IP.
Nicht verwechseln mit
- DMA
- DMA (Direct Memory Access) bezeichnet den direkten Speicherzugriff eines Geräts innerhalb desselben Rechners, etwa einer Festplatte oder Grafikkarte. RDMA überträgt dieses Prinzip über das Netzwerk auf einen entfernten Rechner.
- RoCE
- RDMA ist das Verfahren, RoCE eine von mehreren Arten, es zu transportieren. Daneben gibt es InfiniBand und iWARP, die dasselbe Prinzip über andere Netzwerkschichten umsetzen.
Quellen
- RFC 5040: A Remote Direct Memory Access Protocol Specification · abgerufen am
- NVIDIA MLNX_OFED-Dokumentation: RDMA over Converged Ethernet (RoCE) · abgerufen am
- AI SolutionX: Vier DGX Sparks. Ein Modell. (Projektseite) · abgerufen am
Fachlich geprüft am · Alle Begriffe im Glossar