Come viene condiviso il carico di lavoro e cos'è l'Alternate-Frame Rendering (AFR)?

Test - Analisi del Micro-Stuttering su configurazioni multi-GPU in Crossfire e SLI.

Avatar di Tom's Hardware

a cura di Tom's Hardware

Come viene condiviso il carico di lavoro e cos'è l'Alternate-Frame Rendering (AFR)?

AFR è il metodo di rendering più usato dalle configurazioni multi-GPU. Come suggerisce il nome, le immagini sono riprodotte alternativamente nella loro completezza. I prerequisiti per la creazione di una sequenza d'immagini senza errori sono un carico di lavoro equilibrato tra le GPU, e prestazioni simili se non identiche tra le varie schede montate.

Molti credono che abbinare una scheda veloce e una lenta non ha senso perché la scheda più veloce abbasserebbe le sue prestazioni fino a pareggiarle con quella più lenta. Non è vero, ma una configurazione simile è comunque sconsigliabile perché il carico di lavoro sarebbe sbilanciato e il risultato inaccettabile.

Diamo un'occhiata a questo semplice diagramma di un sistema con due schede grafiche. La scheda 1 riproduce la prima immagine (frame), e allo stesso tempo la scheda 2 riproduce la seconda immagine. Poi la scheda 1 si occupa del terzo frame e la scheda due del quarto, e così via. L'immagine della scheda 2 viene inviata al display buffer della scheda 1, a cui è connesso il monitor.

Il lavoro procede senza problemi almeno finché il carico di entrambe le schede è più o meno identico. Quando si usano solo due schede, la trasmissione dei dati e il data buffering hanno bisogno di regole ferree per il bilanciamento delle prestazioni. La sincronizzazione delle immagini in uscita è sempre un potenziale problema.

Le configurazioni con tre o quattro GPU funzionano in maniera simile; i frame vengono riprodotti alternativamente da tutte le schede. Le prestazioni scalano teoricamente del 100% con una configurazione dual-GPU, un risultato che è però difficile da raggiungere in realtà e spesso queste configurazioni sono effetti da micro-stuttering, un fenomeno di cui parleremo fra poco. Uno degli obiettivi di chi programma i driver è bilanciare correttamente i carichi di lavoro e ottenere un output d'immagini corretto ed esente da errori di sincronizzazione.