Rapid Packed Math: Bethesda su Switch – Sotto la Scocca

Condividi l'articolo

L’annuncio di Doom e Wolfenstein II su Switch è stata una bella notizia. Tra tutte le case di terze parti, è stata Bethesda a portare su console Nintendo i suoi giochi, partendo da una vecchia gloria come Skyrim, per poi arrivare con due giochi estremamente contemporanei. È lecito chiedersi come sia possibile che Bethesda possa portare questi giochi su Switch, mentre altri dichiarano di non potere o preferiscono sviluppare versioni “spin off” dei loro giochi. Lo ripeterò sempre: ogni gioco va preso come un mondo a se, ognuno ha le sue problematiche ed ogni team ha diverse competenze alle quali attingere.

Nel caso di Bethesda, di recente sono state rilasciate informazioni interessanti, dalle quali è possibile ipotizzare uno dei possibili fattori in grado di aiutare il porting di questi giochi su Switch. Wolfenstein 2, supporterà su PC e PS4 Pro una tecnologia chiamata Rapid Packed Math. Di cosa si tratta? Non è altro che il famoso calcolo FP16, che io stesso ho nominato e che ogni tanto si sente in giro. Direi che è un buon momento per spiegare un po’ in cosa consiste veramente questa tecnologia.

Il Tegra X1 supporta anche Vulkan tra l’altro.

Tutti i dati che devono essere elaborati da un calcolatore devono essere salvati da qualche parte. Esattamente come noi scriviamo su un foglio di carta i passaggi di un’equazione, così il computer deve fare uso delle sue memorie per salvare i dati di partenza, per elaborarli e per scrivere il risultato.

Un numero a 32 bit a virgola mobile, FP32, può rappresentare un valore massimo pari a 3,4 x 10^38. Un numero molto grande. Questo è possibile combinando una notazione esponenziale con la base binaria. Nel mondo dei videogame i calcoli sulla geometria e sui vertici richiedono questo tipo di precisione e range e per questioni di praticità, tutti i dati sono usati come FP32.



Non tutti i calcoli però hanno effettivamente bisogno di sfruttare un FP32, basta molto meno. Ecco quindi che in campo mobile si fa spesso uso degli FP16, che sono numeri a virgola mobile a 16 bit. Occupano la metà dello spazio fisico, ma il range di valori è nettamente inferiore. Infatti il numero più grande salvabile in un FP16 è 6,5 x 10^4. Parliamo di 34 ordini di grandezza in meno.

Ora, ragionando in modo ideale, se un FP16 occupa metà spazio di un FP32, posso inserire in una memoria lunga 32 bit ben due FP16. Inoltre in questo modo posso eseguire il doppio dei calcoli nello stesso periodo di tempo, raddoppiando idealmente la potenza a disposizione. Questo è vero, ma si scontra con una grossa limitazione: le case produttrici di schede grafiche. Loro hanno in genere interesse a creare diversi segmenti di mercato e limitano in maniera artificiale le capacità dei chipset in base al loro piazzamento. I calcoli FP16 quindi vengono eseguiti spesso alla stessa velocità degli FP32, con ognuno di loro inserito in un registro grande il doppio: uno spreco di risorse. In fondo però, nessuno ne fa uso, quindi non si tratta di un difetto.

Una visualizzazione grafica del vantaggio della Rapid Packed Math

Negli ultimi anni qualcosa sta cambiando. Il calcolo degli FP16 a velocità doppia è una delle tante feature portate avanti da AMD con la sua nuova linea di schede grafiche Vega. Al momento, le GPU da gioco in grado di sfruttare questa tecnologia sono: le AMD Vega, la PS4 Pro, entrambe di AMD e Nintendo Switch, per Nvidia. Insieme queste tre rappresentano un numero abbastanza basso dell’intera popolazione di giocanti. Implementare queste funzioni non è semplice. Molti calcoli devono rimanere a 32bit, altri, se ridotti a 16 rischiano di perdere troppa precisione e calare di qualità.

Anche dove è possibile ridurre, rimpicciolire direttamente da 32 a 16 non è consigliato. Va riscritto in 16bit. Ed i motori devono essere flessibili nell’usare matematica diversa. Richiede un certo sforzo ingegneristico. E se lo sto facendo per il beneficio di poche persone, è un costo che non tutti sono in grado di sostenere.



id Software ha sempre sviluppato tecnologie uniche ed all’avanguardia. AMD ha ovviamente indirizzato queste scelte, ma ha scelto un team molto competente per fare da punta di lancia. A questo punto, avendo loro un motore in grado di sfruttare questa tecnologia, perché non usarla su ogni piattaforma possibile? Il matrimonio Bethesda – Switch nasce secondo me anche per questo, in modo un po’ fortuito. Le tecnologie che stavano sviluppando per tutt’altro, sono utili anche per la piattaforma Nintendo e questo rende l’incontro una proposta più fattibile.

Quanto sarebbe il boost effettivo dell’uso degli FP16 però? In un mondo ideale sarebbe del 100%, il che porterebbe la potenza grafica teorica di Switch in docked da 393 Gflops a 786 Gflops. Più realisticamente, guardando benchmark realizzati da AMD e sentendo voci nell’industria, ci si può aspettare un miglioramento più nell’intorno del 30-40%. Ragionando in termini di FLOPS però non si ha un quadro completo.

Slide della presentazione di Mass Effect Andromeda.

Questo tipo di ottimizzazione andrebbe studiata a livello più basso. Io posso anche raddoppiare la velocità di una certa parte del codice, ma se per andare avanti devo aspettare comunque l’esecuzione di quello più lento, non ho risolto nulla. I vantaggi si giocano sul filo dei millisecondi dell’esecuzione dei codici. Inoltre l’utilizzo di FP16 diminuisce anche la richiesta banda passante, cosa che su una piattaforma come il Tegra X1 è ben più di impatto rispetto alle altre console o ai PC.

Sarà questo il nuovo futuro del calcolo grafico per videogiochi? Difficile dirlo con certezza. Nel tempo sono sempre apparse numerose tecnologie, sfruttate poche volte e poi sparite nel nulla. La speranza è che più questo nuovo metodo si diffonderà, più Switch avrà opportunità di ospitare sempre più titoli delle console “maggiori” dovendo fare meno sacrifici. Far Cry 5 è un’altro dei giochi che sfrutterà il calcolo FP16 su Vega. Chi vuole scommettere su un port per Switch?

Potrebbero interessarti