News GCN5 (Vega) - Nachlese GDC17 - forgotten tidbits

User-News

Von E555user

Hinweis: Diese "User-News" wurde nicht von der Planet 3DNow! Redaktion veröffentlicht, sondern vom oben genannten Leser, der persönlich für den hier veröffentlichten Inhalt haftet.
Von der landläufigen Online-Presse missachtet wurden während der GDC2017 diverse Details für GCN5 und die Vega Architektur sichtbar. Diese sind seit einiger Zeit auf OpenGPU.com abrufbar.
Bislang wurde lediglich die ISA für GCN3 veröffentlicht, für GCN4 wurden diverse Informationen nur spärlich bekannt. In der Präsentation von T. Lottes (AMD) zur GDC2017 gibt man nun einen Ausblick auf GCN5 Erweiterungen.

kurze Übersicht basierend auf der GDC-Präsentation
GCN4
+L1 Cache Prefetch für Shader
GCN5
+SubDWordAddressings built into 16-bit Vector ALU Operationen mit bis zu 3 Source Operanden
+Packed 16bit Math-Ops @ Double Rate inclusive Clamp
+Packed 16bit Vector Buffer Instruktionen
+Vector Image Instruktionen

mein Kommentar:
Bei den Ausführungen zu GCN im Allgemeinen bzw. künftigen Features von GCN5 scheint dabei deutlich zu werden, dass für AMD hinter den GCN Iterationen zu aller erst die ISA gemeint ist. Das Chipdesign selbst kann allerdings sehr unterschiedlich ausfallen, wie z.B. bei den APUs gut zu sehen war.
Ohne sich in Details zu verlieren gibt es in meinen Augen zu den Codeoptimierungen für Ryzen interessante Parallelen bzw. Trends zu beobachten:
1. die Lokalität der Daten zu den Ausführungseinheiten muss im Codedesign zunehmend berücksichtigt werden. Mit steigender Autonomie der Opcode-Scheduler in Hardware, zunehmend parallelen Funktionseinheiten sowie Vergrösserung von Caches und deren Hierarchien wird die Thread-Zuteilung sowie ein Cache-freundliches lokales Datenhandling wichtiger.
Struct of Arrays statt Array of Structs ist hier das Stichwort für beide Multicore-Ansätze.
2. die breiten Vektoreinheiten verlangen nach 128bit SIMD Codeoptimierung, unter dem Stichwort Packed Math gilt es die FPUs für 16FL und Integer Operationen herzunehmen. Die Methoden sind ähnlich, die Parallelität und Latenz sehr unterschiedlich. Interessant ist dabei die Clamp Instruktion bei den GPUs. Dabei werden in GCN beim Überlauf die Ergebnisse ohne zusätzliche Laufzeit auf einen definierten Extremwert festgepinnt (z.B. 1,0 bei Float), seit GCN3 auch bei Int-Ops.
Man darf also gespannt sein ob es beim GCC Projekt zu GCN im September auf dem GNU Tools Cauldron wieder neues zu berichten gibt.
 
Zuletzt bearbeitet:
Zurück
Oben Unten