PhysX sulla CPU non supporta i multi-core?

Guida - È possibile usare PhysX con schede Radeon? Abbiamo abbinato Radeon e GeForce per scoprirlo.

Avatar di Tom's Hardware

a cura di Tom's Hardware

PhysX sulla CPU non supporta i multi-core?

Il problema è che in quasi tutti i benchmark è stato usato un solo core della CPU per PhysX, in assenza dell'accelerazione hardware della GPU - o almeno così dicono alcuni. Ancora una volta questa sembra una contraddizione, dati i risultati abbastanza buoni ottenuti nello scaling di PhysX sulla CPU con Metro 2033.

Scheda Grafica GeForce GTX 480 1.5 GB
Scheda dedicata PhysX GeForce GTX 285 1 GB
Driver Grafici GeForce 258.96
PhysX 9.10.0513

Per prima cosa abbiamo misurato l'uso dei core. Siamo passati in modalità DX11 con il suo supporto multi-threading per avere un quadro reale delle prestazioni. La sezione superiore del grafico qui sotto mostra che i core della CPU sono usati piuttosto uniformemente anche quando la fisica estesa è stata disabilitata.

Per ampliare l'effetto collo di bottiglia, abbiamo iniziato con una risoluzione di 1280x1024. Minore è l'impatto della scheda video come fattore limitante, migliore è lo scaling del titolo su più core. Questo scenario dovrebbe cambiare in modalità DX9, perché limita lo scaling a soli due core della CPU.

Abbiamo notato un piccolo aumento nell'uso della CPU quando viene attivata la gestione di PhysX attraverso la GPU, perché la scheda video ha bisogno di un abbondante flusso di dati in entrata, ed è la CPU a doverli produrre. Tuttavia l'aumento è più ampio con PhysX CPU attivato, il che indica un'implementazione della parallelizzazione di discreto successo da parte dello sviluppatore.

Osservando Metro 2033 scopriamo che un uso ragionevole degli effetti PhysX consente di giocare, anche se PhysX non è accelerato. Questo principalmente perché Metro 2033 è limitato dalla scheda video e dalle sue prestazioni, anziché dagli effetti PhysX. C'è un'eccezione tuttavia: l'esplosione simultanea di diverse bombe. In questo caso la CPU soffre di un serio calo del frame rate, seppure la fluidità resti nell'ambito dell'accettabilità. La maggioranza degli appassionati però non vuole giocare a risoluzioni così basse, e quindi siamo passati a valori più alti.

Realizzare questi benchmark con una scheda video più potente e una dedicata solo a PhysX è stata una scelta ponderata, dato che una singola scheda Nvidia normalmente soffre di alcune penalità prestazionali se deve gestire sia la grafica che la fisica. In questo caso la differenza tra Physx gestito dalla CPU su un processore a sei core con multi-threading ben implementato e una singola GPU è quasi inesistente.

Valutazione

Contrariamente ad alcune notizie, l'SDK PhysX di Nvidia offre supporto alle CPU multi-core. Quando usato correttamente offre prestazioni molto simili a quelle ottenibili con una singola scheda video. C'è ancora un problema però: PhysX amministra automaticamente la gestione dei thread, spostando il carico dalla CPU alla GPU quando trova una scheda video compatibile. Sono gli sviluppatori a doversi preoccupare di spostare nuovamente parte del carico sulla CPU.

Lo sforzo e la spesa richiesti per modificare il codice sono un deterrente. Gli sviluppatori dovrebbero essere onesti e ammetterlo chiaramente. Lo studio di alcuni titoli (in particolare quelli con un certo logo in apertura) ci porta a domandarci se e quanto sia stata ridotto l'investimento in sviluppo. Da una parte Nvidia ha un dovere verso gli sviluppatori - aiutarli a integrare effetti convincenti che i videogiocatori potranno trovare appaganti e che altrimenti non sarebbero potuti essere parte del gioco. Dall'altra Nvidia vuole impedire (e con le sue buone ragioni) che i pregiudizi prendano piede. Secondo Nvidia l'SDK 3.0 offre già queste capacità e quindi non resta che aspettare che in futuro gli sviluppatori se ne avvantaggino.