Hopsekäse schrieb:
Weil ich im HPC-Bereich tätig bin (...)
Bei uns im HPC-Bereich ist Speicherlokalität täglich Brot und das Thema geht da weit über 1-2 GPUs und Speicherpools hinaus. Und da gilt einfach: Wenn man etwas nicht aus irgendwelchen Gründen auf 2 Knoten mit 2x Speicher aufteilen MUSS, dann lässt man das am Besten auch. Denn dann bleibt man weniger äbhängig davon, ob und wie sich die Anwendung diesbezüglich verhält.
Das hört sich aber nicht nach HPC an. Selbst auf dem Cluster unserer Uni laufen äußerst selten Programme mit nur einem Node. Bei den größeren Rechenzentren, wo ganze Institute, mehrere Unis oder Unternehmen etc. pp. kooperieren, ist das noch viel seltener der Fall.
In großen Clustern hängen häufig sowieso Dual-GPU-Karten. Die main-GPU-Partition selbst bei unserem "kleinen" Uni-Cluster (der nur unserer Uni gehört und auch ausschließlich exklusiv von uns genutzt wird) hat auch etwas mehr als 100 K80-Dual-Teslas. Einfach weil Platz/Kühlung/Stromverbrauch bei Dual-GPUs - da sie nur einen Slot brauchen - viel attraktiver ist, als viele einzelne dicke Karten.
Ich kenne kaum Anwendungen im HPC-Bereich, die nur auf einem Node bzw. nur einer GPU laufen. Ob das Klimasimulationen, Sternimpolosionen, Materialsimulationen, Teilchenphysik, Genomsimulationen, Machine Learning Modelle, oder oder oder sind.
Die Parallelisierung ist da auch i.d.R. nicht besonders schwer, denn HPC-Cluster sind ja vornehmlich für zwei Dinge im Betrieb: Cloud-Computing oder wissenschaftliche Berechnungen. Ersteres ist schon von seiner Natur aus ein verteiltes, paralleles System und letzteres birgt auch immer komplexe Probleme, die in Teilprobleme zerglegbar sind.
Selbst auf unserem kleinen Uni-Cluster laufen die Klimamodelle der Meteorologen i.d.R. mit 64-256 Nodes, wobei das je nach Partition Dual- oder Quad-Sockel-Nodes mit jeweile 8 bis 16 Core Xeons sind.
Ich bin im Bereich AI/Machine Learning unterwegs. Dort hatte ich bis jetzt auch nie Probleme, Dual-GPUs zu nutzen, denn entweder handelt es sich um ein komplexes Modell, was viel Rechenzeit benötigt, dann kann ich bedingt durch die große Architektur bei z.B. neuronalen Netzen eigentlich immer starke Zusammenhangskomponenten modellieren und damit ein großes Netz in kleinere Teile splitten, die dann jeweils auf eine GPU geschoben werden...oder ich habe eben keine besonders komplexen Simulationen, weil ich nur mal kleinere Optimierungen vornehme...dann möchte man als Wissenschaftler aber definitiv immer verschiedene Optimierungen testen, was viele kleine Experimente bedeutet...und ob ich dann 16 Nodes allokiere mit je einer GPU wo dann 16 verschiedene kleine Experimente laufen, oder 8 Nodes mit Dual-GPUs, wo dann eben jeweils 2 kleine Experimente parallel pro Node arbeiten, ist mir vollkommen Wumpe. Das kostet mich ja auch kaum Aufwand, außer minimale Anpassungen in den Slurm-skripten die meine Simulationsskripte aufrufen.
EDIT: Das Einzige, wo imho 1x32 GB wirklich deutlich cooler als 2x16 GB im HPC-Bereich ist, ist wenn ich möglichst komplexe Dinge pro GPU berechnen will: die VRAM-Kapazität pro GPU limitiert mir in meinem Machine Learning Fall die sinnvolle Größe, die ein Teilnetz haben kann. Für sehr komplexe Probleme möchte ich aber auch recht große Teilnetze habe. Wenn die Teilnetze zu klein strukturiert werden, müssen ansonsten natürlich in der Tat ewig viele Daten ständig synchronisiert werden, dann dauert die Simulation durch den Datentransfer Ewigkeiten oder die Ausdrucksmächtigkeit meiner Modelle sinkt, weil die größe meiner Teilnetze beschränke...
...16GB pro GPU ist ja aber bis auf die seit "kurzem" verfügbare P6000 eine ganze Zeit lang das Maximum an VRAM pro GPU gewesen. Insofern sehe ich das für eine ~1000 Eur Karte nicht gerade als Problem an. Das ist imho für die Preisregion sogar ziemlich gut.