NVIDIA PhysX e CPU: un binomio non ideale?

Un articolo evidenzia come l'ottimizzazione da lato codice per l'esecuzione di PhysX via CPU sia tutt'altro che ideale, soprattutto confrontandola con quella per GPU
di Paolo Corsini pubblicata il 08 Luglio 2010, alle 17:22 nel canale Schede VideoNVIDIA
Grazie ad un articolo pubblicato sul sito Realworldtech, a firma David Kanter, emergono interessanti informazioni su come NVIDIA gestisca l'ottimizzazione delle proprie API PhysX, con riferimento all'accelerazione della fisica nei giochi utilizzando le proprie GPU da un lato e le CPU dall'altro.
PhysX è una cosiddetta graphics middleware, che permette secondo quanto affermato da NVIDIA di velocizzare l'utilizzo di tecniche legate alla fisica degli oggetti 3D in ambito videoludico con sensibili incrementi prestazionali grazie alla capacità propria delle GPU di gestire al meglio calcoli paralleli. Le elaborazioni legate alla fisica, del resto, sono per loro natura capaci di venir gestite in threads paralleli beneficiando quindi della disponibilità di architetture parallele.
Utilizzando il tool Intel VTune Kanter ha evidenziato, attraverso un'analisi dell'esecuzione di differenti giochi che utilizzano PhysX, che nel momento in cui PhysX non ha a disposizione una GPU NVIDIA per accelerare le elaborazioni vengono utilizzate istruzioni in virgola mobile x87 al posto di quelle SSE, ben più veloci e disponibili in processori sia Intel che AMD in commercio da molti anni.
Questo approccio è da un lato garanzia di compatibilità con qualsiasi tipologia di processore possa venir utilizzata, benché tutte le cpu in commercio da un elevato numero di anni a questa parte implementa supporto SSE. Inoltre, questo permette a NVIDIA di non dover far fronte alla presumibile mole di lavoro legata all'ottimizzazione del codice per istruzioni SSE, cosa da un palo plausibile considerando come l'interesse di NVIDIA stia nel mondo GPU e non in quello CPU.
D'altro canto, l'utilizzo di questo approccio unito al fatto che il codice PhysX viene eseguito in single threaded senza beneficiare della presenza di più core di processori, rende le prestazioni PhysX con CPU inferiori rispetto a quanto potrebbero essere, utilizzando una CPU per le elaborazioni e servendosi di codice multithreaded oltre che di ottimizzazioni per le istruzioni SSE.
Se NVIDIA propone le proprie GPU per ottenere importanti incrementi prestazionali rispetto alle tradizionali CPU con la gestione della fisica nei giochi, è evidente come l'attuale implementazione di PhysX per CPU penalizzi sensibilmente queste architetture, rendendo il confronto con le GPU ben più favorevole a queste ultime.
NVIDIA è libera di ottimizzare o meno le proprie middleware PhysX per l'utilizzo con CPU, ma è evidente come il codice reso disponibile sino ad ora non porti beneficio ai games developer come agli utenti finali. E' ipotizzabile, del resto, che le prestazioni di una CPU multicore con codice PhysX ottimizzato multithreaded e con SSE possa risultare essere ben più veloce di quanto ottenibile con una GPU NVIDIA di ultima generazione. La scelta è libera, avendo NVIDIA proprietà di PhysX, ma è evidente come il livello prestazionale ottenibile con elaborazioni via CPU non sia allineato a quanto teoricamente possa venir messo a disposizione degli utenti. E' altrettanto chiaro, a nostro avviso, come con questa strategia si voglia mettere in una luce migliore di quello che tecnicamente potrebbe essere un limite prestazionale delle GPU rispetto alle CPU, oltre che una forma di fatto artificiale per impedire che PhysX possa venir sfruttato da tutti gli appassionati a prescindere dal tipo di GPU adottata.
212 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - infoSiete dei cani morti...
E' lo stesso discorso dei compilatori Intel che penalizzano i proci AMD... Il software, sull'hw avversario gira male, così il mio sembra piùffigo di quel che in realtà è, ma gira. Così evito beghe con antitrust e organi vari.
e per giunta, se facessero le cose fate per bene, col codice ottimizzato, le performance sarebbero superiori utilizzando una cpu multicore invece di una gpu nvidia.
ho capito bene?
PhysX è una buffonata, andrebbe boicottato.
e per giunta, se facessero le cose fate per bene, col codice ottimizzato, le performance sarebbero superiori utilizzando una cpu multicore invece di una gpu nvidia.
ho capito bene?
sembrerebbe cosi. ma è normale che utilizzi le cpu, d'altronde physix è sua
vai come un treno;
.
.
.
} else { vai una ciofeca;}
Che significa "cosa da un palo plausibile"?
Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".