|EVGA Geforce GTX275 CO-OP PhysX Edition|
|Reviews - Featured Reviews: Video Cards|
|Written by David Ramsey - Edited by Olin Coles|
|Monday, 08 February 2010|
Page 5 of 14
NVIDIA CUDA and PhysX
CUDA stands for "Compute Unified Device Architecture"; the term refers to the combination of the hardware architecture on NVIDIA 8xxx-series and later GPUs and NVIDIA's C programming language libraries. CUDA is a tool for software developers to leverage the many parallel compute engines on an NVIDIA GPU for solving problems amenable to parallelization— that is, problems whose work can be broken up into many parts, where the outcome of each part is not directly dependent on the outcomes of other parts. Although it's implemented in the driver rather than CUDA, anti-aliasing is a good example of such a problem: the post-processing applied to the pixels at the bottom right corner of the screen isn't affected by the processing applied to the pixels at the upper left corner of the screen, so these calculations can be done simultaneously if compute resources are available.
A number of higher-level software libraries have been built on top of CUDA, including OpenCL, DirectCompute, and functions for the Matlab fourth generation programming language. There's also the Bullet collision detection system (used in games to determine when objects hit each other, which prevents your character from walking through walls) and NVIDIA's "PhysX" physics engine.
NVIDIA has been aggressively pushing CUDA in the scientific and even military markets; in fact, they sell a specific line of GPU-based cards optimized for CUDA work (rather than graphics rendering) under the "Tesla" label. Tesla products range from individual cards that can be installed in most PCs to preconfigured "Personal Supercomputers" and large-scale rack-mount Tesla computing clusters. They also provide software products like the "Tesla Bio Workbench" for DNA sequencing and other biological computing tasks.
We've seen physics effects in games for years, with such libraries as the Havok physics engine featuring in titles like Half Life 2 and Company of Heroes. But these early attemps at adding physics to gameplay were limited to relatively simple interactions such as knocking over piles of boxes, or allowing thrown objects to ricochet realistically (i.e. bouncing grenades around corners). NVIDIA's PhysX can handle interactions that are orders of magnitude more complex.
"PhysX" is simply a library of physics-related functions built on top of the CUDA architecture. NVIDIA acquired PhysX when they bought Ageia in February of 2008. Ageia, founded in 2002, designed a specialized Physics Processing Unit, or PPU, analogous to a Graphics Processing Unit (GPU), except that it was designed specifically for physics calculations. A number of companies such as BFG briefly offered "Ageia PhysX" cards with the Ageia PPU before NVIDIA acquired the rights to the technology. After NVIDIA's acquisition, the PhysX library was re-written to run on top of CUDA and the PPU product was discontinued. PhysX is supported on GeForce 8-series and later cards with a minimum of 32 processing cores and 256 megabytes of memory.
According to NVIDIA, PhysX is "...is a powerful physics engine enabling real-time physics in leading edge PC games. PhysX software is widely adopted by over 150 games and is used by more than 10,000 developers. PhysX is optimized for hardware acceleration by massively parallel processors. GeForce GPUs with PhysX provide an exponential increase in physics processing power taking gaming physics to the next level. With NVIDIA PhysX technology, game worlds literally come to life: walls can be torn down, glass can be shattered, trees bend in the wind, and water flows with body and force. NVIDIA GeForce GPUs with PhysX deliver the computing horsepower necessary to enable true, advanced physics in the next generation of game titles making canned animation effects a thing of the past."
Optimizing PhysX performance
PhysX can run on the same GPU that's performing rendering, but the performance will be sub-optimal. This is because the GPU can't run PhysX and render your graphics at the same time: when PhysX calculations need to be performed, a "context switch" from rendering to CUDA must occur, and another context switch is required when switching back to rendering. Although these context switches occur very quickly (on the order of microseconds), they also must occur very frequently, and the context switching time extracts a noticeable performance penalty (one of the performance advantages of NVIDIA's forthcoming "Fermi" architecture is that context switching is much faster). Context switches take so much time that PhysX running on a relatively low-end GPU that's dedicated to the task will handily outperform PhysX running on a high-end GPU that's also performing rendering.
The NVIDIA control panel "sees" the EVGA GTX 275 CO-OP PhysX Edition card as two separate cards. Although EVGA's documentation is mute on the matter, you should ensure that the PhysX processing is set to run on the GTS 250 GPU for best performance. As we'll see in the benchmarks, this can make a substantial difference.
In the follwing sections, Benchmark Reviews will test the performance of this unique new video card.