Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

Man soll nichts ausschließen. Aber ich halte es für unwahrscheinlich, dass man auch mit noch soviel Überlegungen etwas daran wird ändern können, dass auf GPU A berechnete Informationen sich nicht im VRAM von GPU B befinden und da auch nicht hinkönnen, solange es kein Interface zwischen den GPUs gibt, dess Bandbreite sich in Größenordnungen bewegt, die man sonst nur von Grafikspeicher kennt.

Wird aber nicht genau das mit dem shared Image und Memory das die ständig betonen angesprochen? Da gibts halt nicht mehr Vram von GPU A und VRAM von GPU B sondern VRAM von GPU A und B und beide greifen auf die selben Daten im VRAM zu. Das Problem dabei wäre natürlich die "Richtigkeit" der Daten sprich wenn GPU A gerade was fertig berechnet und die Daten im VRAM aktualisiert, so arbeitet die GPU B im Moment mit veralteten und falschen Daten. Sie haben aber villeicht einen Code entwickelt wo eine GPU immer genau das berechnen wo sie nur bereits vollkommen vollständige Daten haben die sich nicht mehr ändern werden. Wenn z.B GPU A Level Geometrie, Lichtquellen und alles andere was nötig zur Beleuchtung und Schatten berechnet hat, dann fäng GPU B an Beleuchtug und Schatten zu berechnen. Das muss dann halt so ausbalaciert werden das beide GPUs in etwa gleich viel arbeiten.

Korriegiere mich wenn ich was falsch verstanden habe ich bin nicht so zuhause auf Hardwarelevel ^^.
 
AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

Wird aber nicht genau das mit dem shared Image und Memory das die ständig betonen angesprochen? Da gibts halt nicht mehr Vram von GPU A und VRAM von GPU B sondern VRAM von GPU A und B und beide greifen auf die selben Daten im VRAM zu.

Nur müssen die Daten dann trotzdem zur jeweiligen GPU - liegen Daten die GPU B braucht (hardwaremäßig) im Speicher der GPU A, müssen diese um zur GPU B zu gelangen trotzdem über das Interface (PCIe) zur GPU B - PCIe ist aber deutlich langsamer als die direkte Verbindung GPU <--> VRAM - und genau da liegt der Haken dieser Theorie.
 
AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

Da stellt sich einem die Frage, ob es von AMD eine gute Idee war, auf die Crossfire-Brücke zu verzichten? Man hätte da sicherlich ein Verbindung finden können, wo die beiden Speicher der beiden Grafikkarten direkt miteinander kommunizieren und Daten austauschen können - und das auch mit entsprechender Geschwindigkeit und Bandbreite. Eventuell hätte darüber auch GPU1 direkt auf den VRAM auf GraKa2 zugreifen können. Ich seh allerdings auch das Problem, wenn es um mehr als 2 Grafikkarten geht
 
AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

Keiner kann dir sagen, wie hoch die Datenraten über die Brücke waren. Wenn das nur einige MB/S waren, dann kannste das auch knicken. So viele Kontakte waren es ja nicht, und es sah auch nicht nach differenziellen Leitungspaaren aus usw. Also viel würde ich da nicht erwarten.

Man soll nichts ausschließen. Aber ich halte es für unwahrscheinlich, dass man auch mit noch soviel Überlegungen etwas daran wird ändern können, dass auf GPU A berechnete Informationen sich nicht im VRAM von GPU B befinden und da auch nicht hinkönnen, solange es kein Interface zwischen den GPUs gibt, dess Bandbreite sich in Größenordnungen bewegt, die man sonst nur von Grafikspeicher kennt.
Also das kann gar nicht sein bzgl der Bandbreiten.

1. muss über das normale SI ja auch die Texturzugriffe erledigt werden
2. muss über das SI ja auch das ganze Z-Buffer usw usf Sach drüber laufen
3. brauchst du ja nicht alle Informationen, sondern nur einen Bruchteil davon. Die Frage ist halt wie groß der ist

Also mehr als 10% von der Bandbreite des SI würden mich überraschen. Und das passt halt relativ gut in nen PCI-E 3.0 16x Interface

Wieso nicht? Die schlechte Skalierung hat man ja nicht, weil die GPUs Däumchen drehen, sondern weil eine GPU Berechnungen durchführen muss, die die andere parallel auch berechnet. Das bedeutet doppelten Aufwand, in diesem Teil der Pipeline aber keinerlei Geschwindigkeitsgewinn gegenüber Single-GPU.
Richtig.

Du gehst aber davon aus, dass die GPUs eben die Sachen auch wirklich doppelt berechnen müssen. Das macht aber nur Sinn, wenn du durch eigene Berechnung auch wirklich schneller bist, als "einfach" auf die Daten per Transfer zu warten.

Früher/heute ist es klar notwendig gewesen, dass jeder seine Daten selbst berechnet, weil eben immer der Umweg über den CPU-RAM genommen werden musste, und auch die Interconnects langsamer waren.

Ganz abgesehen davon konnten die GPUs nicht mit virtuellen Adressen umgehen usw usw. Du hättest also auch große Probleme gehabt, überhaupt auf die Daten zu zu greifen. Sprich du hättest sehr wahrscheinlich immer die gesamten Buffer hin und her kopieren müssen, ganz gleich davon wieviel du wirklich brauchst.

Mit den Techniken, die man für bindless Textures usw usf alles eh schon in er GPU integriert hat, kannste auch einen globalen Adressraum aufspannen, und dann wirklich direkt die Daten dir holen, die du brauchst, und auch wirklich NUR die Daten die du brauchst. Da kannste unglaublich viel Bandbreite einsparen.

Die GPUs von heute kannste nicht mehr mit denen von vor 3-4 Jahren vergleichen. Da hat sich bzgl. der Hardwarefähigkeiten sehr sehr viel getan. Das Problem ist nur, die APIs sind nicht nachgekommen, warum auch immer...

Afaik machen DX und OpenGL da rein gar nichts. Die sprechen einen Multi-GPU-Verbund wie eine einzelne Grafikkarte an
Gut, das ist nämlich auch mein Stand.

- der Rest bleibt dem Treiber überlassen, der somit schon heute all die Möglichkeiten hat, die du als Potential für die Zukunft ansiehst.
Das Problem ist hier aber deine API, also das Programmiermodell, das hinter steht. Das bricht dir das Genick, weil du eben nicht die nötigen Informationen hast, um die Sachen um zu setzen. Es muss ja IMMER! funktionieren unter allen Konstellationen. So was treibt dich in den Wahnsinn, wenn du es nicht expliziet im Programmiermodell schon berücksichtigst. Man könnte also zwar theoretisch machen, aber die Aussichten auf Erfolg würde ich als sehr sehr sehr sehr sehr gering bezeichnen. Da ist es einfacher nen komplett neuen Standard durch zu drücken, als sowas rein über nen Treiber machen zu wollen.

Dual-GPU-Grakas sind afaik sogar in der Lage, die interne Kommunikation über den PCIe-Switch laufen zu lassen, ohne den PCIe-Controller in der CPU zu belasten.
Das hat nichts mit Dual-GPU-Grakas an sich zu tun, sondern liegt rein daran, dass da ne PCI-E Bridge auf der Karte drauf ist, und man Device-to-Device Communication über die Treiber forciert, bzw eben über PCI-E Packages und entsprechende Config der Bridge einen Multicast macht, also DAten an beide schreibt.

Das ist ne reine PCI-E Geschichte und ist bzgl der Software eigentlich komplett transparent. Also manche Sachen sogar für den GPU-Treiber. Es kommt da drauf an, wie die die Sachen mit den Adressen geregelt haben. Das ist eigentlich nur eine entsprechender Config der DMA Engine und dann kümmert sich der PCI-E Hardwarelayer darum, dass das nicht über den CPU-Controller läuft.

Das ist ganz lustig, wie PCI-E da teilweise mit scheinbarer "Magic" arbeitet :D Ich hatte da in den letzten 1,5 Jahren so manche Situation, wo ich gedacht habe, der PCI-E Hardwarelayer würde mir Probleme machen, aber es lief dann einfach. :devil: Man sollte echt nicht glauben, was die PCI-E Hardware so alles rein über den Transportlayer abwickelt! :wow:

Mehr kann ich dazu aber mal wieder leider nicht sagen ;)

Ich persönlich glaube aber, dass du die Bandbreite unterschätzt. Für Beleuchtungsberechnungen braucht GPU 2 eben nicht nur ein paar Daten von GPU 1 (und das mit möglichst wenig Latenz), sondern GPU 2 braucht die komplette Levelgeometrie und sämtliche Lichtquellen, die GPU 1 schon berechnet hat, denn es gibt meines Wissens nach kein Format, mit dem GPU 1 "nur" das Lichtfeld als solches übergeben könnte, dass vom GPU1-Teil des Levels ausgeht.
Das ist soweit ich das überblicken kann richtig. Aber du musst auch schauen, was Mantle kann. Du hast nicht mehr die ganzen unterschiedlichen Buffertypen, sondern nur noch einen. Der Programmierer kann sich also sowas "einfach" basteln, wenn er will. Zumindest seh ich jetzt keinen Grund, warum das nicht gehen sollte.

Stattdessen müssen sämtliche Grundlagen des Beleuchtungsprozesses eingespeißt werden und dann von GPU2 z.T. noch einmal nachvollzogen werden, weil möglicherweise Verschattung aus Level-Teil1 sich nur in Teil2 auswirken. Und wenn jetzt noch Reflektionen hinzukommen, kann es sein, dass GPU2 anschließend ein vergleichbares Paket zurückschicken muss - das bei multiplen Reflektionen oder Streuung ggf. dazu führt, dass GPU1 noch einmal Teile der zuvor übergebenen Daten aktualisieren muss,...
Wie gesagt, Mantle scheint da viel mehr Freiheiten zu geben. Da lassen sich schon recht einfach viele Konzepte überlegen, wie man das verhindern/umgehen kann. Vieles davon läuft auf die gleichen Vorgehensweisen wie bei bindless Textures raus.

Man muss es halt "nur" implementieren und performant zum laufen bekommen, was eine heiden Arbeit ist. Wenns dann aber mal läuft steckst du natürlich die Konkurrenz, die so was nicht nutzt/hat in die Tasche. ;)

Ein wichtiger Punkt sei hier nochmal angemerkt. Wie es scheint ermöglicht Mantle komplett asyncrones arbeiten. Das sieht DX und meines Wissens nach OpenGL an sich nicht vor. Hier nimmt man "einfach" die Fähigkeit von GCN (müsste eigentlich seit derHD5k Serie sogar sein), das man mehrere Queues hat, in die man Aufgaben reinsteckt und dann eben sogar outoforder abarbeiten kann.

Wie gesagt, die Hardware kann eigentlich VIEL mehr als die "normalen" Graphics-APIs aktuell vorsehen.

PS: Reflektionen und Spiegelungen sehe ich auch noch als eines der größeren Probleme an, wobei man sich da auch wieder Lösungen überlegen kann. Man kann der GPU mit den Daten der Spiegelung ja mitteilen, welche Geometrie der Bereich der Spiegelung hat usw. Dann kümmert die sich selbst darum, die Spiegelung/Reflextion mit den Daten zu verrechnen. Die Bilddaten für die Ausgabe muss man ja eh hin und her schieben.

Oder, komplett anderes Beispiel: Auf der GPU generierte Geometrie, z.B. Tesselation oder Displacement-Mapping auf Objekten, die sich durch beide Bildhälften ziehen. Ein Torbogen kann leicht das Level überspannen und besteht vielleicht nur aus einer Tesselationsanweisung und seinen Endpunkten - die nicht in den Aufgabenbereich der gleichen GPU fallen.
Ja, Objekte die über Grenzen hinweg gehen sind spannend, da Sie eben nicht soo einfach zu behandeln sind.

Hier spielt aber auch wieder die vermutliche asyncronität von Mantle rein. Das erleichtert halt die Lastverteilung.

Ich lass mich da gerne eines besseren belehren, aber ich glaube nicht, dass man die Interaktionen zwischen zwei Levelteilen so klein machen kann, dass PCIe damit locker fertig wird. Nicht ohne Grund redet z.B. auch niemand von mehr von Tile Based Rendering, obwohl gerade Iris Pro und die Xbox 1 massiv davon profitieren könnten.
Also meines Wissens nach ist Tile-Based-Rendering gerade wieder top aktuell. Man will ja z.B. unterschiedliche Bildteile mit unterschiedlichen Auflösungen rendern, um Performance raus zu holen. Stichwort Overlays usw.

Wenn es denn so ohne weiteres möglich wäre, eine Szene häppchenweise zu berechnen.
DX haben Overlayfunktionen gefehlt, die die Hardware eigentlich schon sehr sehr lange kann... Das wurde meistens aber nur in professioneller OpenGL Software verwendet, da man dafür eben auch die Profikarten gebraucht hat... Ich wollte mal bei nem OepnGL Projekt Overlay nutzen, weil ich die Funktion in den OpenGL Specs gefunden hatte und so nützlich fand. Leider musste ich herausfinden, das Consumerhardware die nicht unterstützt... AMD und nVidia wissen halt, wie Sie ihre teuren Profikarten absetzen...

Ansonsten kommen durch DX11.2 aber die Handwerkzeuge um genau das zu ermöglichen. Die APIs sind hier einfach viel viel viel zu langsam in ihrer Entwicklung...

Das sollte sogar ohne explizites CF möglich sein, denn da berechnen dann ja wirklich beide GPUs das komplette Bild. Mit ein bißchen Trixerei könnte man vermutlich sogar ein Auge von Nvidia und das andere von AMD versorgen lassen (Fanboys sähen dann natürlich nur noch 2D :ugly: ). Aber entsprechend mies wäre auch die Skalierung einer derartigen Lösung:

De facto hat jede GPU die volle Arbeit, die ein Bild mit der hälfte der Gesamtauflösung erfordert. Also wo eine Single-GPU-Karte 1920x1080 berechnet, hat eine Hälfte eines Päärchens nur 970x1080 zu bearbeiten. Aber zwischen HD und FHD liegt eben nicht unbedingt ein großer FPS-Unterschied.
(Für die Rift ist es natürlich so oder so die einzige Option, AFR-Lag wäre intollerabel)
Ja, das sollte eigentlich ohne Probleme möglich sein :D

Nur müssen die Daten dann trotzdem zur jeweiligen GPU - liegen Daten die GPU B braucht (hardwaremäßig) im Speicher der GPU A, müssen diese um zur GPU B zu gelangen trotzdem über das Interface (PCIe) zur GPU B - PCIe ist aber deutlich langsamer als die direkte Verbindung GPU <--> VRAM - und genau da liegt der Haken dieser Theorie.
Ja es ist langsamer, du musst, wenn du es intelligent implementierst, aber auch nur einen winzigen Bruchteil an Daten transferieren.
 
AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

Keiner kann dir sagen, wie hoch die Datenraten über die Brücke waren. Wenn das nur einige MB/S waren, dann kannste das auch knicken. So viele Kontakte waren es ja nicht, und es sah auch nicht nach differenziellen Leitungspaaren aus usw. Also viel würde ich da nicht erwarten.
Naja, das heißt aber nicht, das man nicht eine entsprechende Brücke entwickeln könnte, die den Anforderungen entspricht.
So, nach dem, was es bis jetzt war, würde ich auch sagen, das nicht viel über die Brücke lief...
 
AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

Datenübertragungen mit hohen Frequenzen ist aber ALLES! nur nicht einfach.

Du musst auch schauen, dass du entsprechende gesetzliche Richtlinien einhälst. Du musst da schon sehr aufpassen, dass du da nicht nen Hochfrequenz-"Radio"-Sender baust...
 
AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

Ich hab nie behauptet, das es einfach wäre, so einen Schwingkreis findet man schnell überall ;)
 
AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

AMD wusste bis vor kurzem, laut eigener Aussage, nicht mal das es MR gibt ^^. AMD war zuletzt nicht mal in der Lage seine neuen Grafikkarten mit anständigen BIOS Versionen zu versehen, geschweige denn Treiberseitig vernünftig auf Spiele ab vom Mainstream zu reagieren (siehe Pcars, wenig Framepacing...). Nun schüttelt AMD mal eben den heiligen MGPU Gral aus dem Ärmel und läßt die Grafik einer APU am besten noch mit zwei verschiedenen dezidierten Grakas laufen, ohne MR. :wow:

Bis das Flächendeckend greift hat NV schon den ersten Monitor entwickelt der ganz ohne Grafikkarte aus kommt ! :D
fanboy incomming xD

ich gönn es amd ,die machen es besser momentan mit ihren projekt wie nvidia,auf die habe ich langsam keine lust mehr drauf muss ich sagen ,schon allein gsync ,isn witz
 
AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

Eventuell schafft die bessere Arbeit mit MGPU dann ja auch eine weniger starke Relevanz von Profilen für XFire.

Würde nochmal besser sein für Leute die nicht soviel Geld in den Taschen haben aber doch Leistung wollen.
 
AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

Keiner kann dir sagen, wie hoch die Datenraten über die Brücke waren. Wenn das nur einige MB/S waren, dann kannste das auch knicken. So viele Kontakte waren es ja nicht, und es sah auch nicht nach differenziellen Leitungspaaren aus usw. Also viel würde ich da nicht erwarten.

Auf alle Fälle wäre nicht bekannt, dass AMD jemald was an den CF-Specs geändert hat. Wenn man bedenkt, wann die Brücke entwickelt wurde, würde ich pro Kontakt also bestenfalls die Datenraten von PCIe1 erwarten (die Steckkontake und Länge sind ja ähnlich, wie bei mPCIe, sollten also ähnliche Möglichkeiten bieten). Von der Gesamtbandbreite her wäre maximal ein x4 analog drin -> soviel, wie heute über eine 3.0er Lane läuft.

Also das kann gar nicht sein bzgl der Bandbreiten.

1. muss über das normale SI ja auch die Texturzugriffe erledigt werden
2. muss über das SI ja auch das ganze Z-Buffer usw usf Sach drüber laufen
3. brauchst du ja nicht alle Informationen, sondern nur einen Bruchteil davon. Die Frage ist halt wie groß der ist

Ggf. brauchst du sogar mehr Informationen. Denn z.B. die Beleuchtung muss ggf. gar nicht zwischengespeichert werden, sondern nur ihre Auswirkung eine Oberflächen. GPU2 fordert dann Daten an, die GPU1 normalerweise nur kurz im Cache gehabt hätte.
Und ob vorgefertigte Texturen, etc. im Shader-Zeitalter noch einen so großen Anteil haben?

Also mehr als 10% von der Bandbreite des SI würden mich überraschen. Und das passt halt relativ gut in nen PCI-E 3.0 16x Interface

Multi-GPU nutzt du nicht, um über die Leistung einer Mittelklassekarte zu kommen. Im High-End-Bereich sind 160 GB/s schon sehr lange überschritten worden. Davon abgesehen kann man schlecht das gesamte PCIe-Interface zu nehmen, um die Daten von einer zur anderen Karte zu schaufeln. Zwei GPUs lasten das eigentlich schon ganz mit ihrer Kommunikation zur CPU aus. Selbst auf einer Dual-GPU-Karte mit eigenem Switch bleiben also effektiv also nur x8 zwischen den GPUs, was vielleicht 3% der VRAM-Bandbreite sind.

Früher/heute ist es klar notwendig gewesen, dass jeder seine Daten selbst berechnet, weil eben immer der Umweg über den CPU-RAM genommen werden musste, und auch die Interconnects langsamer waren.

Wie ich bereits erwähnte: Direkte Kommunikation zwischen GPUs, ohne Umweg über die CPU, ist meines Wissens nach seit Jahren üblich.

Ganz abgesehen davon konnten die GPUs nicht mit virtuellen Adressen umgehen usw usw. Du hättest also auch große Probleme gehabt, überhaupt auf die Daten zu zu greifen. Sprich du hättest sehr wahrscheinlich immer die gesamten Buffer hin und her kopieren müssen, ganz gleich davon wieviel du wirklich brauchst.

Möglich ist das. Allerdings stellt sich die Frage, ob es überhaupt so leicht (d.h. ohne Umweg über eine mitdenkende CPU) möglich ist, dass eine GPU gezielt bei der anderen die Daten anfordert, die sie braucht? GPU1 weiß schließlich noch nicht, was GPU2 berechnet hat und GPU2 weiß nicht, für welche Berechnungen GPU1 Daten gebrauchen könnte. Da ist es ggf. die beste Option, z.B. die gesamtem Geometriedaten hin- und her zu streamen, anstatt erstmal abzuwarten, dass in der Berechnung irgendwann eine Beziehung auftaucht. Dann ist nämlich selbst die Latenz einer direkten PCIe-Verbindung zu hoch.

Die GPUs von heute kannste nicht mehr mit denen von vor 3-4 Jahren vergleichen. Da hat sich bzgl. der Hardwarefähigkeiten sehr sehr viel getan. Das Problem ist nur, die APIs sind nicht nachgekommen, warum auch immer...

Weil es nicht nötig war? Die API sagt der GPU, was gerendert werden soll.
Nicht WIE das zu erfolgen hat. Das entscheiden GPU und Treiber komplett in Eigenregie. Entsprechend muss die API auch nicht daran angepasst werden, sondern nur an komplett neue Techiken, die es der GPU ermöglichen, noch mehr selbst zu organisieren.

Das Problem ist hier aber deine API, also das Programmiermodell, das hinter steht. Das bricht dir das Genick, weil du eben nicht die nötigen Informationen hast, um die Sachen um zu setzen. Es muss ja IMMER! funktionieren unter allen Konstellationen. So was treibt dich in den Wahnsinn, wenn du es nicht expliziet im Programmiermodell schon berücksichtigst. Man könnte also zwar theoretisch machen, aber die Aussichten auf Erfolg würde ich als sehr sehr sehr sehr sehr gering bezeichnen. Da ist es einfacher nen komplett neuen Standard durch zu drücken, als sowas rein über nen Treiber machen zu wollen.

"Immer"? Der Treiber arbeitet mit dem begrenzten Aufgabenspektrum, dass die API zulässt. Und mit einer GPU, die auf dieses Aufgabenspektrum maßgeschneidert wurde. Da gibt es keine exotischen Ausnahmen, um die du dich kümmern musst. Deswegen abstrahiert man ja über eine API: Die Software muss sich nicht um Eigenheiten der Hardware kümmern, aber umgekehrt auch nicht die Hardware um Eigenheiten der Software.

Das hat nichts mit Dual-GPU-Grakas an sich zu tun, sondern liegt rein daran, dass da ne PCI-E Bridge auf der Karte drauf ist, und man Device-to-Device Communication über die Treiber forciert,

Das brauchst aber die nötige Bandbreite und in einem x8-CPU-x8 Interface hast du die nicht. Ein Switch ermöglicht dir eine zusätzliche, direkte Verbindung.

Das ist ganz lustig, wie PCI-E da teilweise mit scheinbarer "Magic" arbeitet :D Ich hatte da in den letzten 1,5 Jahren so manche Situation, wo ich gedacht habe, der PCI-E Hardwarelayer würde mir Probleme machen, aber es lief dann einfach. :devil: Man sollte echt nicht glauben, was die PCI-E Hardware so alles rein über den Transportlayer abwickelt! :wow:

Erwähnte ich an anderer Stelle, dass es manchmal eine ganz gute Idee ist, nicht alles selbst in Software regeln zu wollen? ;)

Das ist soweit ich das überblicken kann richtig. Aber du musst auch schauen, was Mantle kann. Du hast nicht mehr die ganzen unterschiedlichen Buffertypen, sondern nur noch einen. Der Programmierer kann sich also sowas "einfach" basteln, wenn er will. Zumindest seh ich jetzt keinen Grund, warum das nicht gehen sollte.

Wenn Mantle es ermöglicht/erfordert, den kompletten Renderprozess selbst zu organisieren, dann geht das, ja.
Dann ist das aber langsam endgültig keine HAL mehr, sondern etwas, dass noch unterm dem Niveau jetziger Treiber arbeitet.

Wie gesagt, Mantle scheint da viel mehr Freiheiten zu geben. Da lassen sich schon recht einfach viele Konzepte überlegen, wie man das verhindern/umgehen kann. Vieles davon läuft auf die gleichen Vorgehensweisen wie bei bindless Textures raus.

Man muss es halt "nur" implementieren und performant zum laufen bekommen, was eine heiden Arbeit ist. Wenns dann aber mal läuft steckst du natürlich die Konkurrenz, die so was nicht nutzt/hat in die Tasche. ;)

Jup, nachdem du mehr Entwicklerzeit für Multi-GPU-Rendering investiert hast, als AMD und Nvidia in den letzten 8 Jahren, hast du dann einen endscheidenden Leistungsvorteil gegenüber konkurrierenden Spielen bei 0,01% der potentiellen Käuferschaft. Wenn du Glück hast, kauft davon sogar jeder zehnte ein Spiel wegen Performance-Vorteilen, vollkommen egal wie gut/schlecht Spielprinzip und Story sind.

Klingt lukrativ ;)

Ein wichtiger Punkt sei hier nochmal angemerkt. Wie es scheint ermöglicht Mantle komplett asyncrones arbeiten. Das sieht DX und meines Wissens nach OpenGL an sich nicht vor. Hier nimmt man "einfach" die Fähigkeit von GCN (müsste eigentlich seit derHD5k Serie sogar sein), das man mehrere Queues hat, in die man Aufgaben reinsteckt und dann eben sogar outoforder abarbeiten kann.

OpenGL und DX dürften tatsächlich keine OoO-Konzepte vorsehen. Wozu auch? Im hochparalleln Rendering lassen sich seeeeehhhhr viele Berechnungslatenzen bequem maskieren, weil man eine enorme Menge an ohnehin zu berechnenden Aufgaben hat, die man erledigen kann, während eine andere auf Ergebnisse wartet. Da mit spekulativen Berechnungen anzufangen wäre reine Leistungsvernichtung.
Ich glaube aber auch nicht, dass GPUs sowas selbstständig machen können. OoO erfordert nun einmal Einheiten, die sich verwalten, welche Ergebnisse endgültig sind und welche unter welcher Annahme entstanden. Sicherlich können die allgemeinen Ausführungseinheiten auch sowas in Software emulieren - aber Performance sieht anders aus.

Also meines Wissens nach ist Tile-Based-Rendering gerade wieder top aktuell. Man will ja z.B. unterschiedliche Bildteile mit unterschiedlichen Auflösungen rendern, um Performance raus zu holen. Stichwort Overlays usw.

Overlays haben nichts mit Tile Base zu tun. Das sind komplett unabhängige Bildebenen. Und was man will ist ohnehin nicht das gleiche wie das, was man kann.
 
AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

Nicht umsonst sollen zukünftige GPUs mit integrierter CPU daherkommen. ;)
 
AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

Hallo zusammen

Ich hab mir das hier mal durchgelesen und hab da mit einer Theoretisch (nach meinen Kentnissen, welche gering sind) Idee gespielt.

Es gibt ja anscheinend das Problem das die Schnitstelle PCI3 glaub ich nicht schnell genug ist.
Wäre es denn nicht möglich wenn man zum Beispiel die TITAN nimmt eine 2GPU reinpacken würde und dann die GPU so programmiert das der VRAM aufgeteilt wird das sie die GPU1 die informations in den "rechten" VRAM teil speichert und die GPU2 in den "linken"?

Weil dann wäre das Problem der Schnittstelle ja theoretisch nicht mehr da weil die GPU1 die Daten aus dem VRAM beziehen könnte der direkt angeschlossen ist und in den die GPU2 die Daten speichert.

Ich weiss das hat nichts mit Mantel zu tun aber da ich neueinsteiger bin Intressiert mich das sehr.
Würde gerne eine Rückmeldung hören ob das überhaupt möglich ist was ich mir hier gedacht habe. :)
 
AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

Das gibt es schon in Form einer GTX690 bzw HD7990, aber auch hier gibts MR, weil die Daten noch den Weg über die CPU nehmen müssen. (Sofern ich das richtig verstanden habe)
 
AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

Nein so einfach geht das nicht. Du musst ja eine Verbindung haben, was ja sowohl bei Multi-GPU als auch bei zwei einzelnen GPUs einfach PCI-E ist.

Wenn müsstest du einen gemeinsamen memory-controller haben, und das wirst du nicht so schnell haben.

EDIT@über mir:
nein, das haste falsch verstanden. Alle Multi-GPUs sind NICHTS! anderes, als zwei einzelne GPUs, die auf einem PCB sitzen, und per PCI-E-Splitter miteinander verbunden sind. Das wars dann auch.
 
AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

Hallo zusammen

Ich hab mir das hier mal durchgelesen und hab da mit einer Theoretisch (nach meinen Kentnissen, welche gering sind) Idee gespielt.

Es gibt ja anscheinend das Problem das die Schnitstelle PCI3 glaub ich nicht schnell genug ist.
Wäre es denn nicht möglich wenn man zum Beispiel die TITAN nimmt eine 2GPU reinpacken würde und dann die GPU so programmiert das der VRAM aufgeteilt wird das sie die GPU1 die informations in den "rechten" VRAM teil speichert und die GPU2 in den "linken"?

Geht nicht. DRAM arbeitet mit nicht mit getrennten Leitungen fürs lesen und schreiben, kann also nur an einen Chip angebunden werden. Außerdem würde der Speicher in deinem Beispiel ausschließlich für den Austausch genutzt werden, da der Chip das geschriebene selbst nicht lesen kann. Man müsste ein derartige Lösung also zusätzlich zum bestehenden Speicherinterface installieren. Dann könnte man aber auch ebensogut eine direkte GPU-GPU-Schnittstellen mit auf die Chips packen.
Bislang werden derartige Lösungen aber als finanziell unattraktiv betrachtet. SLI und Crossfire sind ja letztlich eine Billiglösung, um die Entwicklung einer zusätzlichen Ultra-High-End-GPu einzusparen. Umgekehrt heißt dass, das möglichst keine Schaltungen verbaut werden, die nur für SLI/CF gedacht sind.

Wenn ich die Idee aber mal weiterspinne:
Sollte es nicht vergleichsweise einfach sein, dass Speicherinterface eines DRAM-Chips zu splitten? Die Daten müssen ja ohnehin zwischen dem Auslesevorgang aus den Speicherzellen und dem Transfer über das DDR-Interface zwischengespeichert werden. Da sollte es kein Problem sein, sie in doppelt sovielen Takten zu übertragen bzw. einfach den Prefetch zu halbiern und so einen 32 Bit Chip über 16 Bit anzubinden. Alles, was dann noch fehlt, ist die Möglichkeit, flexibel auf die anderen 16 Bit zu schalten - die mit GPU2 verbunden sind. Diese erfordert zwar auch wieder Multi-GPU-spezifische Technik auf dem Chip, aber wesentlich einfachere, als bei einem zusätzlichen Interface auf den GPUs. Und Speicherbausteine werden ja auch in viel größeren Stückzahlen verbaut, als GPUs, so dass sich der zusätzliche Aufwand leicht rentiert.
Vorteil wäre jedenfalls, dass über den PCIe-Switch einer Dual-GPU-Karte nur noch die physischen Speicheradressen und Zugriffszeitpunkte abgestimmt werden müssen, aber nicht der eigentliche Inhalt. Außerdem wird die effektive Speicherkapazität nicht mehr halbiert, da Texturen&Co nur einmal abgelegt werden müssen.

Kennt sich jemand mit DRAM-Chiparchitektur gut genug aus, um die Machbarkeit zu beurteilen? Für mich klingt es gerade lächerlich naheliegend. Die einzige Gefahr geht von dem armen Typen aus, der das 2x512 Bit Speicherinterface für die r290x² routen soll, aber diese Gefahr kann man mit einer stabilen Zellentür neutralisieren :ugly:

(Alternativplan B: Notfalls nimmt man non-G DDR3, der mit mehreren Geräten am Speicherbus zurechtkommt. Die Koordination zwischen den GPUs wird zwar etwas komplexer, wenn zwei dieser Geräte zwei Speichercontroller sind und der Speichertakt geht in den Keller, aber auch so wäre ein wechselseitiger Zugriff auf die gleichen Chips machbar.)
 
AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

Könnte man das nicht auch dadurch erschlagen, dass man wie in der guten alten Zeit den Texturspeicher wieder separat macht - dann können die GPUs interleaved darauf zugreifen. :)
 
AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

Was ich letztlich vorschlage, ist den kompletten Speicher interleaved anzusprechen. Die Probleme hierfür bestehen aber vorerst auf Basis der elektrischen Verbindung - eine Beschränkung nur auf Texturen bringt keine Vereinfachung. (und auch relativ wenig für multi-GPU, denn Texturen kann man auch direkt an beide Karten schicken, solange deren Speicher reicht. Größere Chips sind hier die billigste Lösung)
 
AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

Geht nicht. DRAM arbeitet mit nicht mit getrennten Leitungen fürs lesen und schreiben, kann also nur an einen Chip angebunden werden. Außerdem würde der Speicher in deinem Beispiel ausschließlich für den Austausch genutzt werden, da der Chip das geschriebene selbst nicht lesen kann.

Ok, danke für die Antwort, bei meinem Beispiel meinte ich damit eigentlich das der GPU so programmiert ist das er von beiden ausliest aber nur in seine hälfte speichern würde das müsste theoretisch möglich sein mit der heutigen Technik (oder nicht?) und selbst wenn die VRAM physikalisch getrennt sein müsste würde es sich doch lohnen da man dann zum Beispiel eine grössere Grafikkarte machen könnte die halt 2 o. 3 o. 4 ansteckplätze benötigt dafür aber 2 oder je nachdem auch 3 o. 4 GPU drin haben würde aber ohne den Leistungsverlust den das CF/SLI hat weil es ja direkt übermitteln würde wenn ich 1/4GPU in zB. 2gb oder 3gb VRAM von 8gb oder 12gb total reinspeichern lasse aber es aus allen ausliest dann sollte es doch möglich sein das sagen wir GPU 1 berechnet Geometrie GPU 2 Lichtquellen GPU 3 Licht/Schatteneffekte und GPU 4 irgendwas anderes was ich leider grade nicht kenne.
wenn dann das spiel gut programmiert wäre auf die Verteilung und ein entsprechendes OS (keine Ahnung ob Windows da gut währe) vorhanden ist dann müsste es theoretisch möglich sein 4 TITAN GPU's zusammen zu stecken und ca. um die 380% Leistung zu erhalten und nicht nur die sagen wir 250% wie einQuad SLI. (Dies sind nur erfundene zahlen von mir keine Ahnung wie viel Leistung ein Quad SLI bringt) die zahlen meine ich auf die Singel GPU bezogen.

es würde theoretisch dann auch 4 Steckplätze benötigen (in meinen Gedanken zumindest) aber es würde nicht ein so extremer verlust entsehen da diese 4 Steckplätze sozusagen von 1 graka abgedeckt würden die alle 4 GPU's und VRAM verbindet.

Edit: Wie macht ihr die Smileys? :/
 
Zuletzt bearbeitet:
AW: Mantle "entfesselt" Crossfire: AMD verabschiedet sich vom AFR-Modus - Mikroruckler adieu?

Ein doppelter Lesezugriff wäre nicht soviel einfacher, als ein doppelter Lese- und Schreibzugriff (die Abstimmung, wer wohin schreibt, entfällt - das wars. Aber selbst die Zeitpunkte müssen weiterhin koordiniert werden, da der DRAM-Chip ja im Moment des lesens durch eine GPU von der anderen nicht genutzt werden kann), wie in meinem Vorschlag. Grundfrage bleibt halt, ob diese so möglich sind. Bislang üblich sind halt nur Speicherinterface mit einem Controller und 1-2 (abseits von Grafikkarten auch bis zu 4 und 8) Chips. Hier gehts um zwei Controller und einen Chip. -> :ka:

Eine Ausbreitung der Konstruktion über mehrere PCBs dürfte aber fast unmöglich sein. Ein Speicherinterface, inbesondere bei den Taktraten, die man von GDDR5 gewohnt ist und die man auch braucht, wenns schneller werden soll, verträgt keine großen Leiterbahnenlängen und erst recht keine Steckkontakte. Schon zwei größere GPUs auf einer Platine so zu koordinieren dürfte sehr schwierig werden und unglaublich komplexe Platinen erfordern. Wenn man danach, wieder erwarten, noch Reserven hat, kann man es aber auch mit noch mehr GPUs auf der gleichen Platine erfordern. Heutige Dual-GPU-Karten sind zwar groß, haben aber noch ein paar cm bis zu den ATX-Grenzen. Die Spannungswandler und Bildausgabe könnte man relativ leicht auf eine Tochterplatine packen. Spätestens, wenn man dann noch die Kartenrückseite nutzt, sollte eine Quad-Titan vom Platzbedarf der Chips her machbar sein. Vermutlich sogar als Dual-Slot (Wasserkühlung ist so oder so Pflicht), nur der zweite blockierte Slot liegt dann halt oberhalb des PEG. Frage ist halt, ob man soviele Chips auch verschaltet bekommt.


Smileys tippt man entweder einfach mit ein oder man nimmt das Auswahlmenü rechts vom Antworten-Fenster.
 
Zurück