View Single Post
Old 15-08-2007, 08:24   #2
blade9722
Senior Member
 
L'Avatar di blade9722
 
Iscritto dal: Jun 2007
Messaggi: 9933
Guida avanzata alla configurazione SLI

FAQ sulla modalità SLI

Aggiungo questa sezione in quanto ho notato che in questo forum sono diffuse alcune imprecisioni sulla modalità SLI.

Domanda: un gioco o una applicazione necessita di una programmazione dedicata per supportare l'SLI, alla maniera del multi-threading per le CPU?

Assolutamente no, se leggete questa guida noterete subito come l'SLI sia completamente gestito dai driver, senza nessun supporto da parte delle applicazioni. Il fatto che io sia stato in grado di configurare il profilo per il benchmark Unigine, senza mettere mani all'applicazione (cosa che non saprei in alcun modo fare) ne è una dimostrazione. Alcune applicazioni recenti (Lost Planet, COD4, Crysis) hanno la possibilità di attivare ottimizzazioni dedicate al multi-GPU. Io non ho notato particolari differenze dall'attivazione e disattivazione di tali ottimizzazioni, ma onestamente non ho effettuato test dedicati.

Domanda: come si rapportano le prestazioni di due schede in SLI rispetto ad una scheda singola?

Sono equivalenti ad una scheda che abbia il doppio di:
pixel shaders (stream processors per le G80)
vertex shaders (stream processors per le G80)
TMUs
ROPs
larghezza del bus verso la VRAM

ma lo stesso quantitativo di VRAM della scheda singola. Queste unità di calcolo si intendono come funzionanti alla stessa frequenza della scheda singola.

In alternativa si può pensare ad una scheda con lo stesso quantitativo di unità di calcolo della scheda singola, ma frequenze raddoppiate.

Ora, in netto contrasto con le mia affermazioni, è opinione diffusa in una parte degli utenti di questo forum che "una scheda singola sia nettamente più efficiente". A dimostrazione della mia tesi riporto questo piccolo esperimento:

Ho effettuato un underclock della mia 8800GTS dimezzando le frequenze a 256/594/792 Mhz, ed ho lanciato il benchmark di Lost Planet DX9 nelle seguenti condizioni:

1280x960 4xAA 16xAF dettagli massimi. Ho scelto questo benchmark in quanto ci sono due scene, una completamente GPU limited (snow) e una più CPU limited (cave).

Risultato:

8800GTS @ 256/594/792 - scheda singola
SNOW: 18 FPS
CAVE: 26 FPS

A questo punto ho attivato l'SLI:

2x 8800GTS SLI @ 256/594/792
SNOW: 35 FPS
CAVE: 45 FPS


Per simulare una scheda singola di prestazioni doppie ho effettuato il test ripristinando le frequenze di default:

8800GTS @ 512/1188/1584 - scheda singola
SNOW: 37 FPS
CAVE: 46 FPS

E' evidente come le due schede in SLI abbiano prestazioni solo marginalmente inferiori alla scheda singola con frequenze doppie. Siccome mi rendo conto che la prova descritta precedentemente può risultare di criptica interpretazione, mi affido ora a ciò che la comunità è più abituata a valutare: i test dei siti specializzati. Per far questo faccio riferimento alle VGA charts di Tomshardware "congelate" all' 8 febbraio 2008.



Vediamo ora come si rapportano le prestazioni di due schede in SLI rispetto alla singola nelle ultime tre generazioni.

Nvidia Serie 6

6600GT: 8 pixel shaders, 8 ROPs, 8 TMUs, 3 Vertex shaders
Core clock: 500MHz, Memory interface: 128 bit GDDR3 1000MHz

La 6800 Ultra in pratica raddoppia ogni valore.
6800 Ultra: 16 pixel shaders, 16 ROPs, 16 TMUs, 6 Vertex shaders
Core Clock: 400MHz, Memory interface: 256 bit GDDR3 1100MHz

Confrontando:
2x6600GT SLI: 761.4
6800Ultra: 768.2

Due valori identici, con un guadagno del 60% rispetto alla singola 6600GT

Nvidia Serie 7

7600GT: 12 pixel shaders, 8 ROPs, 12 TMUs, 5 Vertex shaders
Core clock: 560MHz, Memory interface: 128 bit GDDR3 1400MHz

La scheda che più si avvicina al raddoppio è la 7950GT.
7950GT: 24 pixel shaders, 16 ROPs, 24 TMUs, 8 Vertex shaders
Core Clock: 550MHz, Memory interface: 256 bit GDDR3 1400MHz

Confrontando:
2x7600GT SLI: 1402.5
7950GT: 1465

Risultati simili, con un guadagno del 50%-60% rispetto alla singola 7600GT

Nvidia Serie 8

8600GTS: 32 stream processors, 8 ROPs, 16 TMUs,
Core clock: 675MHz, Shader clock: 1450MHz Memory interface: 128 bit GDDR3 2000MHz

Non esiste una scheda che si avvicina al raddoppio di performance, la più vicina è la 8800GTS 320MB che è comunque qualcosa in più (è circa un +125%)
8800GTS 320MB: 96 stream processors, 20 ROPs, 48 TMUs
Core Clock: 500MHz, Shader Clock: 1200MHz Memory interface: 320 bit GDDR3 1600MHz

Confrontando:
2x8600GTS SLI: 1668
8800GTS 320MB: 1827

Come da pronostico, la 8800GTS prevale, ma marginalmente. Il guadagno rispetto alla singola 8600GTS è del 40%-50%.

In definitiva, dalle VGA charts potete notare come tutto sommato io non abbia fatto altro che scoprire l'acqua calda:

- le prestazioni di due schede in SLI e di una scheda singola di prestazioni doppie risultano allineate
- a parità di CPU, il guadagno ottenibile mettendo una seconda scheda o cambiandola con una di prestazioni doppie non è mai il 100% e diminuisce man mano che la VGA è più veloce.

L'equivoco sulla valutazione delle prestazioni sta tutto in questi due punti: viene messo in risalto come il guadagno non sia mai del 100% con la seconda scheda, trascurando però il fatto che lo stesso accada con una scheda singola di doppia velocità perchè causato dal limite della CPU.

Esempio di valutazione dell'impatto della CPU sulle performance globali: Crysis DX10


Date un'occhiata al seguente collage di screenshots:


Le acquisizioni sono state ottenute con le seguenti impostazioni:
Vista x64 - DX10 - Dettagli Very High

La chiave di lettura è la seguente: nella colonna di sinistra noterete una tipica scena GPU limited. Il frame rate è strettamente dipendente dalla risoluzione, e l'aumento di performance attivando l'SLI è corposo (60-65%).
La colonna di destra invece mostra un campo lungo, tipico scenario CPU limited. Il frame rate è piuttosto basso, ed è pressochè indipendente dalla risoluzione e dalla presenza della seconda scheda in SLI.

Purtroppo, con la mia CPU, il secondo caso è più frequente. Il processore pone un limite massimo ai frame, strettamente dipendente dal dettaglio scelto. Scendendo da very high a high si ha un incremento di circa il 20-25%. Tale incremento non dipende da un unico parametro (io avrei scommesso sulla qualità degli oggetti, che in realtà influenza il numero degli stessi); ognuno impatta per poche frazioni percentuali, obbligandoti ad abbassarli tutti per avere l'incremento sperato.

La ragione per cui in alcune applicazioni con la seconda scheda in SLI nei benchmark si hanno incrementi, per esempio, solo del 30% è questa: il benchmark viene effettuato in un mix di scene CPU limited e GPU limited. Ovviamente, accade lo stesso anche con la scheda singola.

Può l'attivazione della seconda scheda in SLI comportare un abbassamento del frame rate?

Si, ad oggi ho evidenziato tre possibili scenari:
- Se il profilo SLI nel driver non è corretto, le perfomance possono degradare anche pesantemente. L'unica soluzione è installare un driver con un profilo funzionante o configurarlo manualmente. L'eventualità è piuttosto rara.
- La gestione della sincronizzazione delle due schede in SLI è un carico aggiuntivo per la CPU. Questo implica che negli scenari 100% CPU limited non solo non si evidenzia un incremento di performance, ma potenzialmente si può verificare un calo. Il fenomeno in genere è trascurabile, risultando evidente solo a frame rate elevati.
- Il bridge SLI ha una banda di 1GB/s. Questo impone un preciso limite al massimo frame rate ottenibile ad una determinata risoluzione. Non essendo a conoscenza del formato con cui vengono trasferiti i dati dei frame buffer, non posso calcolare tale limite.

E' possibile utilizzare ancora sistemi Quad SLI (2 9800GX2, 2 7950GX2) su XP ?

Come potete intuire dalla descrizione delle modalità nella prima parte della guida, Windows XP supporta modalità AFR con al massimo due GPU. In passato i sistemi con 2 VGA 7950GX2 sfruttavano quindi la modalità ibrida AFR-SFR. Nvidia ha ufficialmente abbandonato il supporto a più di due GPU su windows XP, per questo motivo nei profili la modalità ibridia non è mai impostata. Se avete un sistema Quad Sli e il vecchio SO della Microsoft, dovete impostare manualmente tale modalità nel profilo del gioco con nHancer, avendo cura di non modificare i flag di compatibilità. E poi provare come va.... I sitemi a 3 GPU invece non sono compatibili con XP, e non c'è un work-around.

E' vero che in SLI non è possibile attivare il Vsync e/o il triplo buffer ?

Di seguito riporto l'andamento del frame rate nel benchmark di Company of Heroes, eseguito in 1600x1200 a 75 Hz (Massimo dettaglio, 4x AA, DX10), con il Vsync attivato e disattivato.



Come potete vedere, con Vsync attivato il frame rate non supera il refresh verticale di 75 Hz, segno che sta correttamente funzionando. Inoltre, gli FPS assumono qualsiasi valore, e non sono limitati a frazioni di 75, quindi il "triple buffer" è correttamente implementato.
Non so da dove derivi questa tesi, che a volte trovo riportata nei forum. Forse è una limitazione dei primi driver, che poi è stata risolta.

E' vero che, a causa del "micro-stutter", anche se il frame rate aumenta in SLI, è "come se diminuisse"

Questa tesi del micro-stutter è piuttosto criptica. Da quanto ho capito si riassume più o meno in questo: l'erogazione dei frames in SLI è molto irregolare, con più frame elaborati contemporaneamente (utili quindi ad innalzare il risultato dei benchmark, ma che vengono percepiti come uno solo dall'occhio umano), intervallati da lunghi momenti di pausa.

Di seguito ho riportato il ritardo fra i frames di 4 secondi di rendering della scena del canyon del 3Dmark2006.



In effetti si nota che in SLI i frame in certe situazioni sono più irregolari che nella scheda singola, però si tratta di oscillazioni fra i 13 e i 18ms, ben lontana dalla situazione di quasi contemporaneità descritta come micro-stuttering.

E' vero che il mouse lag in SLI è pari a quello della scheda singola

Questa tesi deriva direttamente dalla teoria generale della parallelizzazione delle risorse, per cui si aumenta la banda passante (cioè il frame rate), ma non si diminuisce la latenza. Tuttavia, mi sembra una semplificazione, uno dei parametri impostabili nei driver è il "prerender limit", in passato chiamato "render frames ahead", che viene indicato come strettamente legato al mouse lag, e che lascia intendere come ci possa essere un asincronia fra l'elaborazione dei frames e della risposta agli input. Qui non ho dati da proporre, se non la mia esperienza personale: quando ho sperimentato un pesante lag, sempre accompagnato da un basso frame rate, attivando la seconda scheda l'aumento del frame rate è sempre stato accompagnato dalla riduzione del lag.
__________________
Case:Chieftec BA-01B-B-B MB: E-VGA 122-M2-NF59-TR CPU:Athlon64 X2 (Windsor) 6400+ PSU1:Corsair HX 520WPSU2:Thermaltake PurePower Express W0099R VGA: 9800GX2@680/1700/1040 MHz Audio: SB X-fi Gamer HDD 2x320GB RAID-Link alla guida SLI - CPU gaming test

Ultima modifica di blade9722 : 06-09-2009 alle 14:58.
blade9722 è offline   Rispondi citando il messaggio o parte di esso