:: Back to news index ::

New PhysX FluidMark 1.2: First Tests

with 6 comments

As we mentioned previously, upcoming FluidMark 1.2, next version of popular GPU PhysX testing and benchmarking application, will include support for Multi-Core CPU PhysX calculations, and overall multi-threading optimizations as well.

Jerome Guinot, FluidMark developer, was kind enough to provide us with latest beta-version of new Fluid-Mark 1.2, and we’ll try to answer finally, what is faster – GPU PhysX or properly optimized CPU PhysX.

But first, lets take a closer look at new FluidMark. (click to view full picture)

Main control panel now includes several additional options, like “Force PhysX CPU” – ability to switch between GPU and CPU PhysX, without necessity to use Nvidia Control Panel.

Multi-core PhysX” checkbox enables all multi-threading optimizations, vital and most interesting part of new FluidMark.

# of CPU cores” is used specify number of CPU cores dedicated to simulation (up to 32 in current version), however this option is no so transparent as it looks – increased number of cores adds additional fluid emitters to the scene (one emitter per core or two in general), and with equal number of particles, various number of emitters can affect performance.

Application window has also changed – benchmark is still based on SPH fluid simulation, built into PhysX SDK (latest version is used), but scene includes additional static objects, particles appearance if different and, as mentioned earlier, several emitters can be used simultaneously. Nice addition – GPU temperature overlay, usefull for GPU stress testing.

Final Global score in benchmarking mode is calculated now in a different way, and can’t be compared with previous version of FluidMark. It consist of two components – GraphX score (graphics framerate per second) and PhysX score (physics simulations per second).

Thus, Global score = (GraphX_score * 0.3 + PhysX_score * 1.7) / 2

Now, lets do some testing.

The Wonder of Multi-Threading !

Take a look at the following graph:

[Three emitters were used (# CPU cores = 4) with fixed number of particles - 15 000. Timerange - 60 sec. 800x600 rendering window. System: C2Q 9400 @ 2.66 GHz CPU, Nvidia GTX 275 + GTX 260 (192 sp) GPUs, 4GB RAM, Win XP, PhysX System Software 9.09.1112]

When “Multi-core PhysX” option is off, PhysX simulation and scene rendering are done in the same thread and, more important, PhysX SDK multi-threading flags are not set.

But when “Multi-core PhysX” is enabled, all PhysX simulations are done in separate threads and since there is still a thread for the rendering, scene rendering is boosted because there is no longer PhysX in scene thread. Same situation with PhysX, one or several threads are completely dedicated for physics simulation.

While SPH fluid simulation is running on CPU with  “Multi-core PhysX” set to off, load is destributed through several cores (probably due to internal Windows threads management), but in sum that’s 26% – full one core.

But with multi-threaded optimizations enabled, application fully utilizes all four cores by 100%, what results in great speed boost.

In addition, one interesting detail was discovered – fluid simulation is running faster on GPU when one emitter is used, and opposite way – for CPU it prefers multiple emitters (with equal number of particles) – probably that’s peculiarity of PhysX SDK itself.

For example, with one emitter and multi-core PhysX switched to off, CPU simulation results in 36 global points (64 with 3 emitters – on graph above), while GTX 275 GPU – in 247 points (128 with 3 emitters). But since one emitter can’t utilize more than two cores,  number of emitters was increased to gain equality.

Therefore, bechmarking seems to be a little tricky in new FluidMark. We are curious if someone will come with solid method after app release.

P.S. Thanks to Jerome for beta FluidMark and detailed explanations :)

Written by Zogrim

March 17th, 2010 at 5:58 pm

Posted in PhysX Tools

Tagged with , ,

6 Responses to 'New PhysX FluidMark 1.2: First Tests'

Subscribe to comments with RSS

  1. Nice beta test Zogrim!

    FluidMark will be released tomorrow or the day after tomorrow on Geeks3D. Stay tuned!



    17 Mar 10 at 7:26 pm

  2. Zogrim, please check graph-data and text, I’ve thought quite some time about it before writing this comment — if I don’t have a massive missunderstanding some things don’t fit together, not only in numbers. ATM I prefer the text-only-version, the graph seems missleading both in numbers and conclusions one would draw.
    Anyway, thanks for the information, keep it up!




    18 Mar 10 at 4:06 pm

  3. cesimbra
    It’s checked for sure.. what doesn’t fit for you ?



    18 Mar 10 at 4:46 pm

  4. Ooops, my usual way of quoting doesn’t work as expected here, sorry, I repost my comment:

    In the Global-Scrore-graph GPU-PhysX scales up with Multi-Core-PhysX ‘on’ — in my eyes this collides with
    ” [...] – fluid simulation is running faster on GPU when one emitter is used, and opposite way – [...] ”

    as they should scale down, because in the graph-annotation is written
    ” Three emitters were used (# CPU cores = 4) [...]”

    so it should scale down.

    Also, when you refer in the text to the graph, the numbers and the direction of scaling don’t seem to fit

    ” For example, with one emitter and multi-core PhysX switched to off, CPU simulation results in 36 global points (64 with 3 emitters – on graph above), while GTX 275 GPU – in 247 points (128 with 3 emitters). ”

    Perhaps I have a lack of understanding and I’m to blame.



    18 Mar 10 at 5:58 pm

  5. cesimbra
    First of all, “Multi-Core PhysX” option has less to do with number of emitters – it just enables app threading, and sets PhysX and rendering in separate threads -that’s because there is such big gain for both CPU and GPU calculations over single threaded mode. On the graph, both ON and OFF sides are using same number of emitters.
    “one interesting detail” text and below has nothing to do with those graph, that’s just some of my observations.

    “# of CPU cores” option is tricky itself. In PhysX SDK you can run 10 emitters on one core (or GPU), but you can’t set one emitter to utilize 10 cores, and to put load on all cores, additional emitters are added to the scene.

    Thus, to gain equality, 3 emitters were used for both CPU and GPU calculations, with multi-core set to ON and OFF – one emitter runs on GPU faster than three emitters on GPU (with equal 15 000 particles number), but it’s not fair to compare one emit. on CPU vs one emit. on GPU, because one emit. on CPU even with multi-threading uses only two cores maximum.

    Hope my lame explanation won’t misunderstood you more)



    18 Mar 10 at 7:08 pm

  6. Zogrim, thanks a lot for helping me out of my misery — your elaboration and examplification is absolutely satisfying to me and surely far from lame.

    Greetings from Germany



    18 Mar 10 at 7:48 pm

Leave a Reply

Copyright © 2009-2014. | About project | Privacy Policy
PhysX is trademark of NVIDIA Corporation