PhysX por CPU podría ser 4 veces más rápido si usara SSE PhysX por CPU podría ser 4 veces más rápido si usara SSE

en vez de ello usa las antiquísimas instrucciones x87

PhysX por CPU podría ser 4 veces más rápido si usara SSE

por

en vez de ello usa las antiquísimas instrucciones x87

PhysX el API de físicas de Nvidia, funciona sobre 3 tipos de hardware: GPUs Nvidia, PPU AGEIA (sólo viejas versiones), y CPU, aunque por la web hayan corrido muchas acusaciones de que dicha API no aprovecha el CPU como es debido, hasta el momento no se había realizado un estudio exhaustivo que demuestre ello, y desde Real World Technologies decidieron hacerlo.

Nvidia desde hace mucho ha afirmado que los GPU pueden mejorar el performance de las físicas hasta por 4 veces el rendimiento de los CPU, mientras que sus detractores afirman que otras soluciones de físicas por CPU como Havok, tienen un rendimiento comparable a PhysX por GPU, y que PhysX penaliza el rendimiento del CPU para hacer lucir mejor a los GPU. Para demostrar quien dice la verdad, los de Real World Technologies realizaron un test usando un equipo con un microprocesador Core i7 3.2GHz con una Nvidia Geforce GTX 280 y 3GB de memoria DDR3, bajo Windows 7 x64, con PhysX 9.09.1112; se usaron Cryostasis Tech Demo y Dark Basic PhysX Soft Body Demo, las cuales fueron analizadas con Intel VTune, y con la aceleración por GPU deshabilitada en el panel de control de Nvidia, VTune analiza el uso que hace cada proceso en ejecución de cada área del microprocesador, de dicho análisis se determinó que el núcleo de PhysX usa enteramente instrucciones x87 durante su funcionamiento.

Cabe recordar que desde tiempos de los Pentium III lanzados a fines de 1999 los microprocesadores hacen uso de las instrucciones SSE, por lo que no se explican por qué no usar instrucciones SSE (16 registros de 128 bits), en vez de usar x87 (8 registros de 80 bit); se sabe que PhysX usa instrucciones de punto flotante de precisión simple de 32 bits, los actuales microprocesadores son capaces de ejecutar hasta 2 instrucciones x87 de precisión simple por ciclo, mientras que usando SSE la cual es capaz de ejecutar 4 operaciones de precisión simple por ciclo, y modernos CPU como Nehalem y Shanghai son capaces de ejecutar 8 instrucciones de precisión simple por ciclo, por lo que si PhysX por CPU usara instrucciones SSE, su performance podría ser entre 2 a 4 veces dependiendo del microprocesador, que usando las viejas instrucciones x87, el uso de estas últimas hace lucir mucho mejor al GPU frente al CPU.

Si a ese rendimiento decepcionante por el uso de las instrucciones x87 se le suma el hecho de que la mayoría de juegos que hacen uso de PhysX tan sólo usan 1 núcleo del CPU. Concluyen que esta API infrautiliza los CPU, los que de usarse con el juego de instrucciones apropiado (SSE) en combinación con el soporte multinúcleo (los modernos microprocesadores actuales poseen hasta 6 núcleos), fácilmente se podría obtener un rendimiento comparable que el brindado por PhysX por GPU, haciendo uso de 2 a 3 núcleos del CPU (hecho que se podría comprobar en juegos que hacen uso de físicas Havok como Battlefield: Bad Company 2). Aclaran que Nvidia no tiene la obligación de hacer ello, pues de hacerlo beneficiarían a sus competidores.

Link: PhysX87: Software Deficiency (Real World Technologies)