Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?
Laut einer offiziellen PDF-Präsentation wird AMD bei Multi-GPU-Konfigurationen zukünftig nicht mehr auf den geläufigen AFR-Modus beim Rendern eines Bildes setzen, sofern die hauseigene Mantle-API zum Einsatz kommt. Auf der gestrigen Keynote spezifizierte Johan Andersson, Technical Director bei DICE, dass die neu eingeführten Queues auf unterschiedliche GPUs verteilt werden können.
Nachdem Heise gestern die ersten handfesten Details über AMDs Mantle-API lieferte, hat der Chip-Hersteller die entsprechende Präsentation der ganzen Presse zugänglich gemacht. Darunter gehören auch Informationen zum "neuen" Crossfire, wo es vorher nur hieß, dass die Skalierung mehrerer GPUs steigen soll. Auch stellte man eine höhere Performance bei asynchronen Crossfire-Konfigurationen in Aussicht, beispielsweise im Zusammenspiel einer dedizierten Grafikkarte und der integrierten Grafikeinheit einer APU. Wo die PDF-Präsentation jedoch ziemlich ungenau ist, lieferte Andersson konkretere Angaben in der Keynote rund um Mantle.
Dort erklärte er, dass Alternate Frame Rendering (AFR) nunmehr Geschichte sei. Dieser Modus ist aktuell der Quasistandard, bei dem jede GPU nacheinander ein Bild berechnet. Kommen beispielsweise zwei Chips zum Einsatz, ist der erste für alle "geraden" und der zweite für alle "ungeraden" Bilder zuständig. Die Programmierung des AFR-Modus ist daher ziemlich simpel, sorgt aber für das altbekannte Mikroruckeln. Da jedes Bild unterschiedlich komplex ist, variiert die Zeit zum Berechnen jedes Frames. Da die eine GPU dann auf die andere warten muss, bis das nächste Bild berechnet werden kann, und die Bildausgabe somit unregelmäßig wird, entsteht der ungewollte Nebeneffekt trotz hoher Fps-Werte. Das sogenannte Frame Pacing, mit dem die Ausgabe sortiert wird, dämmt das Problem immerhin ein.
Die neue Vorgehensweise mit Mantle kommt am ehesten dem Split Frame Rendering (SFR) gleich, bei dem ein Bild von mehreren GPUs berechnet wird, wobei es zwei verschiedenen Möglichkeiten gibt. Zum einen kann das Bild einfach zwei geteilt werden und jede Einheit berechnet ihre jeweilige Hälfte. Da aber auch hier Unterschiede innerhalb eines Frames aufkommen, kann zum anderen die Verteilung explizit festgelegt werden. So kann eine GPU beispielsweise ein Viertel des Bildes berechnen, der durch Effekte besonders aufwändig ist, wohingegen die zweite den Rest rendert und somit beide gleichzeitig fertig werden.
Andersson spricht indes davon, dass die neu eingeführten Queues nur noch aus "Image" und "Memory" bestehen. Durch den verringerten Overhead und die niedrigeren Latenzen soll es möglich sein, die Warteschlangen auf verschiedene GPUs zu verteilen, wobei die Speicherkontrolle trotzdem als "tricky" bezeichnet wird - hier dürfte das PCI-Express-Interface in gewisser Maßen limitieren. Außerdem soll es mit Mantle möglich sein, die Compute-Berechnungen asynchron im Vorfeld abzuarbeiten, sodass die letztendlichen Grafik-Berechnungen mit einer zweiten (schwächeren) Grafikeinheit möglich sind - besonderer Einsatzzweck wäre hier wie eingangs erwähnt die Zusammenarbeit zwischen dedizierter Grafikkarte und der integrierten GPU einer APU. AMD stellt außerdem Workstations mit bis zu acht GPUs und 40 TFLOPS Rechenleistung in Aussicht.


Ich verliere auf den Chips, die gerade parallel genutzt werden, 50% Bandbreite, dass stimmt. Aber da die Zugriffsmuster von GPUs relativ gut vorhersehbar sind und nur ein Teil der Daten ausgetauscht werden muss, kann ich über PCIe-Verbindung absprechen, dass zu jedem Zeitpunkt ein Großteil der Speicherchips einer GPU exklusiv zur Verfügung steht.
Den Takt meinst du? Das sollte nun wirklich keine große Herausforderung sein, zwei GPUs auf einer Platine synchron zu takten.
Genau DAS ist NICHT! trivial. Genau um so ein Problem mit sync Takt kümmert sich jemand im gleichen Büro seit round about einem Jahr. Die Tolleranzen sind einfach verdammt klein bei so was und du musst auch noch berücksichtigen, dass es eben durch äußere Einflüsse zu Schwankungen/Fehlern kommt, usw usw usw. Clock sind alles nur nicht einfach. Falls du jemals an ner ASIC-Entwicklung mitarbeitest, Clock, Power und FiFos sind der Ursprung allen Übels. Und machmal auch noch das Reset
Und der Adressaustausch ist ebenfalls kein großes Problem. Zum einen kann ich die Adressen schlichtweg an bekannter Stelle im Speicher ablegen, zum anderen sind die anfallenden Daten eben hochgerade vorhersagbar. Ich kann die Latenz eines Zuordnungstabllenaustausches via PCIe also vollständig maskieren.
Mit DDR/GDDR ist es einfach eine absolut beschissene Idee. Das gesamte Geraffel ist einfach Null darauf ausgelegt. Du schießt dir da fortlaufend ständig und andauernd ins Knie. Da ist es deutlich einfacher "einfach" was komplett anderes zu machen, als das zu versuchen um zu biegen.
Ansonsten hat das aber nichts, also wirklich rein gar nichts mit dem eigentlichen Thema Mantle zu tun. Wäre also cool, wenn wir dazu zurückkommen könnten.
Du bist das Schweizer Taschenmesser für grenzwertige Antworten.
Du brauchst ja saubere Signale, und das bekommste mit doppelt geschalteten Leitungen nicht hin.
und die GPU würde ja sozusagen die Datei holen, ihre Informationen drüberlegen und diese wieder auf ihren teil VRAM bringen damit die 3 andren GPU's diese Daten holen können und ihren teil berechnen?
blöd gesagt wenn eine Grafikkarte als O verkauft werden dann ist die Konstruktion die ich meine einfach grösser, du meinst wahrscheinlich das man2 OO kauft und diese zusammensteckt.
Die Probleme bestehen imho eher darin, dass man dafür andere Speicherkontroller auf den GPUs braucht (bzw. eine zusätzliche GPU-Reihe). Analog zu z.B. den Mehr-Wege-Xeons. So was wie NUMA wird aber eher flachfallen, wegen der unterschiedlichen Zugriffszeiten.
Dann ist man aber wieder hier:
Bislang werden derartige Lösungen aber als finanziell unattraktiv betrachtet.
Wenn die VRAM aber physikalisch unterteilt wäre und sozusagen nummeriert (elektronisch oder physikalisch ka) und mann der GPU sag du darfst speichern in nummer 1 und lesen nummer 1 und 2 (3,4) müsste dies doch "theoretisch" funktionieren
und die GPU würde ja sozusagen die Datei holen, ihre Informationen drüberlegen und diese wieder auf ihren teil VRAM bringen damit die 3 andren GPU's diese Daten holen können und ihren teil berechnen?
Und Mantel soll ja auch 2 Grafikkarte 1 Bild erstellen lassen und unterschiedliche Teile erstellen. (??) wäre ja eine ähnliche Technik nur das man eben immer noch die langsame PCI3 Schnittstelle hat.
blöd gesagt wenn eine Grafikkarte als O verkauft werden dann ist die Konstruktion die ich meine einfach grösser, du meinst wahrscheinlich das man2 OO kauft und diese zusammensteckt.
Dafür bin ich entweder zu blöd oder mein Firmen PC mit dem doofen IE zeigt das einfach nicht an