Seite 3: Einfache Programmierung und NVLink 2.0

Independent Thread Scheduling

Ein Ansatz bei der Entwicklung der Volta-Architektur war der Anspruch, diese derart auszulegen, dass sie einfacher durch die Programmierer angesprochen werden kann, bzw. diese einen Teil der Kontrolle an die Schnittstelle und Hardware abgeben. Die GV100-GPU ist die erste GPU, die das sogenannte Independent Thread Scheduling unterstützt. Ziel des Independent Thread Scheduling ist es, die Auslastung der GPU weiter zu erhöhen, ohne das der Entwickler der Software die Kontrolle der Zuteilung übernehmen muss.

Die Pascal-Architektur führt eine Gruppe aus 32 Threads als Warp zusammen. Dies entspricht der klassischen SIMT-Methodik (Single Instruction, Multiple Thread). Ein solcher Warp wurde in der Pascal-Architektur von einem Program Counter für alle 32 Threads durchlaufen. Da nicht alle 32 Threads gleichzeitig zugeteilt werden konnten, musste diese teilweise warten, bis ein anderer Teil bereits berechnet wurde.

In der Volta-Architektur wird jedem dieser 32 Threads ein eigenen Scheduler zugeteilt, der darauf achtet, welche Threads sich bereits in welchem Stadium der Pipeline befinden und ob eventuell Daten des einen Threads zum anderen übertragen werden müssen und dieser daher warten muss. Das Ergebnis ist eine viel feinere Anpassung der Threads an die mögliche Auslastung der Hardware. Nicht mehr komplette Warps können zusammengefasst werden, sondern viel feiner gesteuert auch einzelne Threads. Die Volta-Architektur bzw. der Treiber selbst entscheidet dabei, wie die Threads zugeordnet werden müssen, der Programmierer der Software hat darauf keinen Einfluss.

NVLink 2.0

Ein schneller Interconnect ist ein wichtiger Bestandteil einer jeden HPC-Hardware. Alle großen Herstellern arbeiten daran ihre Hardware möglichst schnell untereinander und mit externen Komponenten zu verbinden. Mit NVLink präsentierte NVIDIA 2014 auf der GPU Technology Conference seinen eigenen Interconnect. NVLink basiert auf dem High-Speed Signaling Interconnect (NVHS), eine Entwicklung von NVIDIA.

Mit der GV100-GPU optimiert NVIDIA die NVLink-Verbindung auf gleich zwei Art und Weisen. Zum einen wird die Geschwindigkeit pro Link erhöht. Ebenfalls erhöht wird die Anzahl der möglichen NVLink-Links, die eine GV100-GPU aufbauen kann. Lag die maximale Bandbreite pro NVLink bisher bei 40 GB/s für Sende- und Empfangsrichtung, beträgt sie mit NVLink 2.0 nun 50 GB/s. Da die Anzahl an NVLinks von vier auf sechs erhöht wurde, ergibt sich daraus eine kommulierte Bandbreite von 300 GB/s für die GV100-GPU.

Die zwei zusätzlichen NVLinks können für den Aufbau neuer Infrastruktur-Systeme genutzt werden. Bisher ermöglichte NVLink beispielsweise die Anbindung von acht Tesla P100 und über einen PCI-Express-Switch konnte auch ein Prozessor angebunden werden. Mit NVLink 2.0 stehen nun zwei zusätzliche Links zur Verfügung, die beispielsweise für zwei CPUs verwendet werden können. Im Falle der Tesla-V100-GPU-Beschleuniger können aber auch bis zu 64 dieser GPUs zusammengefasst werden. NVLink wird demnach flexibler und schneller – eine Kombination, die sicherlich für den ein oder andere Server-Anbieter eine Rolle spielen wird.

NVLink 1.0 ist zu NVLink 2.0 in der Form kompatibel, dass bestehende Hardware mit Tesla V100 bestückt werden kann und dann auch den neueren Interconnect unterstützt. NVIDIA hat die Hardware dazu seit gut einem Jahr derart ausgelegt, dass bereits an eine Erweiterung gedacht wurde.

Leistungswerte

Natürlich lieferte NVIDIA auch gleich die ersten Leistungs- und Benchmark-Werte. In diesen hat sich NVIDIA die Leistung in den verschiedenen Deep-Learning-Anwendungen angeschaut und diese gegen den Vorgänger Tesla P100 verglichen.

Je nach Anwendung berechnet die Tesla V100 die ihr gestellten Aufgaben um 80 % schneller. Diese Werte sind aber auch extrem von den bereits gemachten Optimierungen abhängig. NVIDIA spricht zwar davon, dass man alle großen Deep-Learning-APIs unterstützt, natürlich aber hatten noch nicht alle Entwickler die Gelegenheit ihre Software auf die Volta-Architektur anzupassen.

Die Verwendung der Tensor Cores soll aber natürlich auch eine wichtige Rolle spielen. Werden diese verwendet, spricht NVIDIA sogar von einem Leistungsplus um den Faktor 2,4 im ResNet Training und um Faktor 3,7 für das Inferencing in ResNet.