Kann ich mehrere GPUs für ein Rasterbild mit mehreren Bildschirmen verwenden?

7

Ist es realistisch, ein Bild mit super hoher Auflösung über ein Array von 3 x 3 oder 5 x 5 (zum Beispiel) gestapelten Bildschirmen zu rendern? Könnte ich dies tun, indem ich mehrere verschiedene GPUs kombiniere, oder wäre die einzige Möglichkeit, eine GPU pro Bildschirm zu verwenden und das zu rendernde Bild einfach zu teilen?

Idealerweise möchte ich weniger GPUs als Bildschirme verwenden können. Obwohl eine GPU nicht ausreicht, hoffe ich, dass ich keine n GPUs für n Bildschirme benötige.

Wenn dies möglich ist, muss ich auch wissen, ob dies die Verwendung des gleichen GPU-Herstellers und -Modells erfordert oder ob nicht verwandte noch die Verarbeitung gemeinsam nutzen können.

Trichoplax
quelle
1
Eine gute Antwort basiert auf dem Wissen, wie die Displays mit den verfügbaren GPUs verbunden werden (es ist nicht trivial, mehr als 9 Display-Ausgaben auf einem einzelnen Computer zu erhalten) und der Software, die für Ihr Rendering verantwortlich ist. Natürlich ist es möglich, die Rechenleistung mehrerer GPUs zu kombinieren, um Ihr Problem zu lösen, aber der Teufel steckt im Detail, wie die Ausgänge verbunden sind und wie viele Computer beteiligt sind.
Rys
1
Ich habe einen Blog-Beitrag gefunden, in dem jemand dazu in der Lage war: rchoetzlein.com/website/multi-monitor-rendering-in-opengl @rys ist jedoch richtig. Um eine solide Antwort zu erhalten, müssen wir weitere Details Ihres Setups kennen.
RichieSams

Antworten:

3

Ja, so etwas ist sicherlich möglich. Zunächst können Sie normalerweise 3 oder 4 Displays an jede GPU anschließen und (mit einem geeigneten Motherboard) bis zu 4 GPUs pro Computer verwenden. Das würde Ihnen 16 Bildschirme geben. Mit mehreren Maschinen könnten Sie noch mehr haben.

Das Rendern auf mehreren Displays von einer einzigen GPU aus ist keine große Sache. Sie können ein einzelnes Fenster erstellen, das sich über alle Anzeigen erstreckt, darauf rendern und "einfach funktionieren" soll.

Das Rendern derselben Szene auf mehreren GPUs ist etwas schwieriger. Eine Möglichkeit besteht darin, auf jeder GPU einen separaten Rendering-Kontext zu erstellen und im Wesentlichen das gesamte Rendering zu wiederholen. Laden Sie alle Puffer und Texturen erneut auf jede GPU hoch und senden Sie die Draw-Aufrufe erneut an jeden Frame. Eine andere Möglichkeit besteht darin, die in DX12 integrierte Unterstützung für mehrere GPUs zu verwenden , mit der Sie mehrere GPUs in einem Renderkontext verwalten können.

Nathan Reed
quelle