Big Accelerator Memory: GPU liest und schreibt direkt auf SSDs
Mit Big Accelerator Memory kommunizieren Nvidias A100-Rechenbeschleuniger mit SSDs. Die GPU kann rechnen, statt zu synchronisieren.

Aus Supercomputern sind GPUs nicht mehr wegzudenken. Ihre Berechnungen werden allerdings vom Prozessor koordiniert, die Grafikkarte dient lediglich als Rechenbeschleuniger. Die deutlich höhere Rechenleistung auszureizen, erweist sich jedoch oft als schwierig.
GPU und CPU müssen sich synchronisieren, damit Letztere Eingabedaten bereitstellt und dafür sorgt, dass die Ergebnisse auf einer Festplatte gesichert werden. Während dieser Zeit ist die GPU oft zum Nichtstun verdammt. Nvidia will dieses Problem lösen.
Techniken wie die Einbeziehung von PCIe-Hardware in die Speicherverwaltung (mittels IOMMU) oder DMA zwischen PCIe-Geräten haben die entstehenden Latenzzeiten bisher schon deutlich reduziert. Allerdings lösen sie nicht das grundlegende Problem: Die GPU ist auf die CPU angewiesen, um auf Festplatten zuzugreifen. Dies geht Big Accelerator Memory (BaM) (PDF) an, eine Entwicklung mehrerer Universitäten in Kooperation mit IBM und Nvidia.
Das Framework lässt die GPU selbst eine NVMe Command Queue (CQ) verwalten, um einer SSD Lese- und Schreibkommandos zu übermitteln. Hierzu wird der Adressbereich der SSD für die GPU sichtbar gemacht, so kann diese Transaktionen auslösen.
Über PCIe kann zudem die DMA-Einheit der SSD auf den Speicher der GPU zugreifen, üblicherweise wäre der Arbeitsspeicher das Ziel. Die Grundlage bildet Nvidias GPUDirect. Ein spezieller Linux-Treiber blendet die genutzten Dateien in den Adressraum der GPU ein.
Das ist kein Directstorage!
Das Besondere: Die GPU übernimmt selbst die Verwaltung der in ihrem Speicher vorhandenen Dateibestandteile. Das unterscheidet BaM von Directstorage, welches lediglich Verarbeitungsschritte wie die Dekompression von Texturen in der GPU statt der CPU vornimmt.
Die Übertragung der Dateien muss allerdings noch immer die CPU anstoßen. BaM hingegen macht die GPU hier unabhängig. Der Vorteil: CPU und GPU müssen sich viel seltener synchronisieren, die entstehenden Wartezeiten entfallen.
Bislang lädt eine Anwendung meist die zu verarbeitenden Daten in den Speicher der GPU und startet dann deren Abarbeitung. Anschließend wartet sie, bis die Verarbeitung abgeschlossen ist, und kopiert die Ergebnisse zurück. Dies zeigt das Bild oben auf der linken Seite.
Besonders ineffizient ist das bei kurzer Rechenzeit pro Datenblock oder wenn nur wenige Bytes aus einem Block benötigt werden. Mit BaM kann die auf der GPU ausgeführte Anwendung feingranular benötigte Daten laden.
Das Paper zu BaM zeigt, dass der Ansatz die Leistung von Anwendungen im Bereich von etwa 30 bis zu 70 Prozent steigern kann. Bei manchen Aufgaben waren sogar Steigerungen um fast den Faktor fünf möglich. Zum Einsatz kamen neben Intels Optane auch Samsungs DC 1735 und 980 Pro.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Das reicht aber nicht, lies mal das verlinkte Paper. Nein, eben nicht, auch wenn die...