Mario e la scimmia del multi-GPU…

Mario e la scimmia del multi-GPU…




scimmiaMario è uno di noi. Non ama certo trascorrere la sua vita a chiedersi se sia meglio sacrificare la risoluzione delle ombre oppure l’anti-alias per avere un framerate decente. Allergico alla modifica dei file di configurazione per ottimizzare le performance, Mario vuole giocare, giocare, giocare…. e nient’altro. La sua VGA top di gamma aveva soltanto un anno e reggeva ancora tutti i giochi in FullHD, ma Mario voleva giocare in 2K. Aveva visto un amico giocare a quella risoluzione ed era rimasto sbalordito. Doveva assolutamente averla anche lui. Aveva del resto un alimentatore da 800W, più che sufficiente per una doppia scheda grafica.

Era una bella ed assolata mattina di primavera quando un essere peloso dai piedi prensili si impossessò di lui e gli comandò di regalare una sorellina alla sua VGA (N.d.A. era la “scimmia del multi-GPU”).  Una volta che la bella bimba fu arrivata, il nostro amico la installò e si accorse che il suo case era troppo mal ventilato per tutto quel calore, e allora che si fa? “E si dai” – si disse “cambiamolo, tanto questo è davvero troppo piccolo”. Ed effettivamente il suo case era così piccolo che alcuni amici lo scambiavano per una console… e “console” era un affronto veramente troppo grave per un PC gamer come lui!

Aveva speso davvero tanto Mario per quell’upgrade, ma adesso il punteggio del benchmark era finalmente quasi raddoppiato e lo ripagava di tutto.

Un mese più tardi però, accadde qualcosa di davvero inaspettato. Era il day-one dell’uscita del suo titolo preferito (proprio quello che aspettava da anni!) e Mario lo acquistò raggiante, senza pensarci due volte. Con quelle due fantastiche bellezze in bella mostra nella vetrina del suo PC, invidia di tutti i suoi amici, Marietto già stava pregustando il piacere di giocare il suo titolo a quella risoluzione impensabile per i comuni mortali che di VGA ne avevano una sola.

Ma una volta installato e configurato ahilui, il gioco non ne volle proprio sapere di scalare… quei 60 FPS che dovevano diventar 120 proprio non si vedevano, anzi… sembrava addirittura che la situazione fosse peggiorata: gli FPS erano 30 e anche scarsi! Non solo il titolo non supportava il multi-GPU ma, con quest’ultimo attivo, il frame-rate era addirittura peggiore.

Cosa fece dunque Mario? “Bene” – si ripeté – “è risaputo che i giochi al day-one non sono mai perfetti… una bella ricerca su Googlexfire e sicuramente si troverà il modo di farlo andare.”. E via di estenuanti scorribande tra forum, YouTube e richieste di aiuto sui social…

Passarono i giorni e le tribolazioni ed alla fine il nostro amico fu costretto a gettare la spugna: no… quel titolo proprio non supportava il multi-gpu.

Non restava che l’ultima spiaggia: inviare un’e-mail allo sviluppatore chiedendo quando fosse prevista l’uscita della patch risolutiva. La risposta arrivò presto, solenne e perentoria: “Gentile Utente, la informiamo che il supporto SLI/Crossfire non è previsto…

Con un groppo alla gola, il nostro amico andò nel pannello di controllo del suo driver, creò un profilo per l’agognato titolo e gli impose la disattivazione del multi-gpu. Fine del sogno. Dopo aver speso tanti soldi, dopo aver riassemblato tutto il PC per cambiare case, si era scontrato con la dura realtà: dovrà giocare a VGA singola, a 50 FPS in FullHD.

Frustrato come solo le scimmie deluse sanno esserlo, il nostro amico vendette le sue due bellissime VGA e dovette accendere un mutuo per acquistare quella nuova appena uscita dal nome titanico che era già un tutto un programma, quella che finalmente gli avrebbe consentito di giocare esattamente come voleva senza nessuna pena. Nulla si seppe più di lui, se non che da quel giorno il suo stato Facebook cambiò in un permanente: “Nel mio PC dovrà esserci sempre una ed una sola VGA”.

Vi siete riconosciuti nella storiella di Mario? Sebbene colorita, la sua vicenda è tristemente familiare a tutti coloro che posseggono più di una scheda grafica. Non fatevi però scoraggiare da Mario: sebbene vi sia una concreta possibilità (sarebbe meglio dire una ragionevole certezza) che finiate come lui, nella realtà le cose non vanno così male come nella storiella.

Dopo la parentesi volutamente scherzosa cerco (e confesso non senza sforzo) di tornar serio e spiegarvi il quadro attuale.

In un mondo perfetto il multi-gpu è veramente una bella cosa. Lo scaling delle performance proporzionale al numero di GPU è desiderabile, in quanto consente un upgrade graduale (anche in termini di spesa), permettendo di spingersi ben oltre le prestazioni della scheda singola. Per fare esempi, uno doppio SLI di Nvidia GTX980 o un 3-way crossfire di Radeon R9 290 sono molto più performanti di una TitanX o di una Fury X singola (trascurando ovviamente la maggiore quantità di VRAM che, come sapete, fa poca differenza nei giochi attualmente in circolazione). Tanti pro dunque, ma anche dei contro e non da poco: temperature e consumi. Temperature perché se le VGA hanno un TDP troppo alto e un sistema di dissipazione mal progettato, posizionarle in slot adiacenti vuol dire togliere sfogo alle ventole che non riescono più ad essere efficienti. Consumi perché 2 VGA consumano anche il doppio dei Watt, richiedendo dunque un alimentatore dal wattaggio sufficiente. Facciamo un esempio: se avete una Radeon R9 290 (il cui TDP è attorno ai 250W) con un alimentatore da 650W e volete raddoppiarla, vi servirà un alimentatore da 800-850W (per quanto con i Watt degli alimentatori vale il melius abundare quam deficere dei latini). Il TDP della VGA che si intende “moltiplicare” è dunque un fattore chiave, insieme al wattaggio del vostro alimentatore. La potenza dunque c’è, ma va pagata a caro prezzo, anche in termini di bolletta della luce.

Altro fattore chiave per il multi-gpu è l’accoppiata CPU/Motherboard. Occorre porre attenzione allo scaling delle velocità degli slot PCI-e della motherboard (dipendente sia da essa stessa che dalla CPU) e considerare che, in linea di massima, gli SLI Nvidia richiedono almeno PCI-e 3.0 x8 (=PCI 2.0 x16) mentre i crossfire AMD si “accontentano” anche di x4. Lo scaling, come dicevamo, dipende sia dal numero di linee (lanes) PCI-e di cui dispone la CPU, sia dalla presenza di chip multiplexer, come i PLX, sulla motherboard.

980sliMa che differenza esiste tra SLI e Crossfire? A parte quella di cui sopra la differenza non è poi tanta. Lo SLI richiede ancora uno speciale connettore tra gli adattatori grafici mentre AMD ha rimosso questa necessità. Sia SLI che Crossfire scalano benissimo,  ma i crossfire hanno al momento una percentuale media di scaling leggermente migliore degli SLI. Occorre riconoscere ad AMD degli sforzi maggiori riguardo all’implementazione del multi-gpu, ultimo dei quali è il cosiddetto Cross-Generation Crossfire, che consente di accoppiare schede di generazioni diverse come, ad esempio, una VGA di serie 290(X) con una 390(X). Bisogna anche riconoscere, d’altra parte, che il TDP generalmente più basso delle schede NVidia favorisce l’implementazione di multi-gpu dai consumi contenuti che non richiedono alimentatori somiglianti a piccole centrali nucleari.

Se in teoria sembra tutto bellissimo, passiamo adesso a vedere come va il multi-gpu nel mondo reale.

Nello scenario attuale (ovvero quello tipico dei giochi basati su DirectX11), il supporto multi-GPU dipende dal motore grafico del gioco stesso in primis e, solo secondariamente, dal driver delle VGA. In soldoni, questo vuol dire che il gioco scalerà se, e solo se, il graphic engine su cui si basa è progettato per farlo.

Non è affatto un caso se i giochi che meglio supportano il multi-GPU sono forse i simulatori di guida. I motori grafici di questi ultimi infatti, sono concepiti fin dal principio per supportare le risoluzioni a triplo schermo. Per tali risoluzioni la GPU singola di fascia alta, ovvero quella di cui il gamer medio è in possesso, non è più sufficiente. Gli sviluppatori si rendono dunque conto che il successo del loro gioco è strettamente legato al supporto di risoluzioni ultra-widescreen e multi-gpu. Senza di questi non potrebbero esistere esistere le postazioni da simracing a triplo schermo che fanno decine di migliaia di click su YouTube, fondamentali nel dimostrare al mondo che quel gioco è il migliore in circolazione. Come potete immaginare, queste postazioni da sogno hanno un ruolo fondamentale nello spingere le vendite del titolo su postazioni molto meno “accessoriate”. Anche nei giochi di sport in generale, poter usufruire di una visuale ampia del campo di gioco (pensate alla differenza tra vedere solo un parte del campo di calcio e vederlo tutto) porta a voler spingere la risoluzione. Anche questi giochi quindi vengono quasi sempre dotati di un ottimo supporto multi-GPU.

Arriva però un titolo mainstream e, come Mario, ci accorgiamo che in questo il supporto multi-gpu è del tutto assente o, in casi migliori, parziale, carente o pieno di bug come flickering, texture mancanti o corrotte e artefatti. Ma perché accade? Per quale motivo ci sono titoli basati su motori grafici concepiti anni or sono che scalano perfettamente mentre altri concepiti ieri non scalano affatto?

Vorrei subito sgombrare il campo il campo dai falsi miti: l’aggiornamento del driver può ottimizzare le performance di un gioco, ma non può assolutamente aggiungere il supporto multi-gpu se il motore grafico del gioco non è progettato per lo scaling. Può anche risolvere problemi inerenti all’implementazione dello stesso ma non implementarlo se non c’è. Tornando a Mario, se voi provaste a chiedere allo sviluppatore per quale motivo il gioco non supporta il multi-gpu, la risposta sarebbe di questo tipo: i possessori di multi-gpu sono pochi, implementare il supporto multi-gpu richiede competenza tecnica, allunga i tempi di sviluppo e questo non è compatibile con il budget. In altre parole: secondo lo sviluppatore il gioco venderà ugualmente anche senza multi-gpu.

Eppure, i possessori di multi-gpu sono tanti ed in costante aumento. Alla fine dei conti, i PC che chiamiamo master race altro non sono che mostri con tripla o quadrupla VGA. Sbalordisce dunque pensare che gli sviluppatori trascurino proprio i possessori di questo tipo di hardware. Sembra proprio che il mercato stia contraddicendo se stesso: da un lato ci vendono CPU sempre più potenti con sempre più linee PCI-e che altro non servono se non al multi-gpu, dall’altro ci danno giochi che non sono in grado di utilizzarle.

w3Detto questo va riconosciuto però che, in molti casi, il supporto multi-GPU non è del tutto assente ma semplicemente parziale o scadente. Vi cito due casi di giochi recenti (N.d.A Parlo di crossfire solo a titolo di esempio). Il primo è The Witcher 3: sebbene al day-one il suo motore grafico presentasse gravi bug che lo rendevano ingiocabile in crossfire (poi risolti da aggiornamenti successivi), questo gioco è in grado di scalare con un doppio crossfire (ma non con un triplo) e lo scaling è efficiente soltanto se si alza la risoluzione verticale oltre i 1080p. In altre parole, a risoluzione 5960×1080 il motore grafico scala male (54-60FPS) mentre a risoluzione 2K e 3K il gioco mantiene i 60FPS anche a dettaglio Ultra. In conclusione: per giocare a questo gioco in crossfire occorre 1) acquistare un monitor di risoluzione superiore a FullHD oppure impostare la VSR (Virtual Super-Resolution) su un monitor FullHD 2) disattivare il 3-way crossfire passando al 2-way dal pannello di controllo Catalyst. Se state pensando “una bella rottura di scatole“, avete fatto centro.

Fallout 4 di Bethesda non è da meno. Anche in questo gioco affinchè lo scaling avvenga siamo costretti ad aumentare la risoluzione verticale. Per fortuna, in questo caso, lo scaling riesce ad utilizzare più di due VGA.

In entrambi i casi quindi siamo in presenza di giochi in cui lo scaling è legato fortemente alla risoluzione, segno evidente che sono stati pensati con in mente il 16:9, diversamente dai giochi di guida.

Se questa era la situazione con DirectX11, va detto però che con DirectX12 le cose potrebbero drasticamente cambiare. Questa nuova API promette infatti di rendere agli sviluppatori più facile la vita, andando a sfruttare tutte le accelerazioni hardware presenti nel PC ed addirittura sfruttando tutta la VRAM presente sui singoli adattatori grafici, che potranno essere persino di tipo diverso (vale a dire potremo combinare AMD e Nvidia). Staremo quindi a vedere quali sorprese ha in serbo il futuro per noialtri che, a dispetto di Mario, continuiamo a credere nel multi-gpu.

– Carlo Iovino –