[Opensim-dev] PhysX Integration into OpenSim

Sean M mondesire.sean at gmail.com
Mon Mar 23 20:48:22 UTC 2015


Please allow me to elaborate about the MOSES Team’s PhysX integration:

·         We are not reinventing the wheel: InWorldz [1] has successfully
integrated PhysX into 2010’s OpenSim 0.6.5 with impressive aircraft [2]and
ground vehicle [3, 4]movement. We commend Elenia and David from InWorldz
for their PhysX initiative and information sharing. We are encouraged and
inspired by their results. With that said, the MOSES team is integrating
the latest PhysX version (3.3.3) into current OpenSim, with anticipated,
continued support for future OpenSim versions. Our support includes the
sharing of the integration source code, documentation, and published
experiment results that will compare performance between PhysX to
BulletSim.

·         With our effort, we are providing an alternative physics engine.
Just like the introduction of BulletSim into OpenSim when ODE was the
default, our effort will introduce another option for region owners. The
code we share will follow the OpenSim plug-in architecture [5] and only
require minimal OpenSim configuration file changes to employ PhysX, making
it easy for region owners to run their regions with PhysX and
experiment/test with the engine themselves.

·         From two separate OpenSim profiling events conducted November
2014 and this January, BulletSim’s CPU demands were observed to be
alarming. Specifically, when comparing all of the components of the
OpenSim.Region namespace (one of the heaviest CPU consumers in OpenSim), we
uncovered that physics dominated consumption by using over 41% of CPU
processing time. It was concluded that because BulletSim physics required
such a large disproportionate amount of CPU, the current physics engine
must be reanalyzed with multithreading and GPU processing capabilities
targeted for efficiency.

·         The most current release of PhysX, 3.3.3 is open-API,
open-sourced, multi-threaded, with complete GPU capabilities. The BulletSim
2.8 engine that is default in OpenSim is single-threaded and does not
support GPU processing; multi-threading and GPU processing capabilities
will be introduced in BulletSim 3. We have turned to PhysX because it
offers these capabilities, with the additional possibilities of n-bodied
physics and more realistic vehicle and robotic movements straight, out of
the box, today.

·         PhysX is cross-platform. Our PhysX integration will not
intentionally break OpenSim portability.

·         PhysX offers the best open-source use of GPU physics calculations
available [6]; similarly, Nvidia graphics generally outperform the AMD
equivalents [7]. Both of these observations steer us towards making OpenSim
support the best performing external libraries and hardware possible. It
should be noted that the speed-ups PhysX brings to games and simulators are
attributed to tight collaboration and integration between the physics
engine developers and the GPU manufacturer (Nvidia to Nvidia), commercial
software development focused on efficient use of the GPU, and continuous
improvements to the SDK [8]. We are integrating PhysX into OpenSim because
the data suggests that it will give us the best performing physics engine
available.

·         Once our integration is complete, we will share performance
benchmarking methods and tools and performance analysis generated from our
MOSES grid. We will systematically measure OpenSim performance with and
without PhysX.  We strive to provide OpenSim with the tools for performance
and the best simulation experience.

  [1]

"Welcome to the InWorldz virtual world!," [Online]. Available:
http://inworldz.com/.

[2]

"When a dream comes true," [Online]. Available:
https://www.youtube.com/watch?v=Fc5O8Jl67wQ&feature=youtu.be.

[3]

"InWorldz PhysX Beta 2 Race," [Online]. Available:
https://www.youtube.com/watch?v=7oed95OPI3Q.

[4]

"Vehicles in InWorldz - The Road Test | Xay Tomsen," [Online]. Available:
https://www.youtube.com/watch?v=7zXPtMInJUs.

[5]

"BulletSim - OpenSimulator," [Online]. Available:
http://opensimulator.org/wiki/BulletSim.

[6]

"Popular Physics Engines comparison: PhysX, Havok and ODE," [Online].
Available: http://physxinfo.com/articles/?page_id=154.

[7]

"Borderlands 2 GPU & CPU Performance Test," [Online]. Available:
http://www.techspot.com/review/577-borderlands-2-performance/page5.html.

[8]

"
http://physxinfo.com/news/11327/multithreaded-performance-scaling-in-physx-sdk/,"
[Online]. Available:
http://physxinfo.com/news/11327/multithreaded-performance-scaling-in-physx-sdk/
.



All the best,

Sean Mondesire, Ph.D.

Virtual World Research Team



On Wed, Mar 18, 2015 at 10:51 PM, Michael Emory Cerquoni <
nebadon2025 at gmail.com> wrote:

> on a other note, if GPU support is the end goal for MOSES team, it should
> be noted that Bullet also can do GPU support and even multi-threaded cpu
> support, as it stands right now its only single thread for Bulletsim,
> though it can be loaded into a separate thread removed from the simulator
> heartbeat, it should also be noted that very little effort has gone into
> fully optimizing what Bullet could potentially do in OpenSimulator.  I do
> kind of wonder why the choice to not improve this effort instead of trying
> to re-invent the wheel so to speak with yet another platform that
> ultimately is not all that much better than Bullet in the end and
> potentially not cross platform. I must admit my interest will be very
> limited if I am required to use MIAB and likely would not do much testing
> myself if that is the case, also I would have absolutely no interest at all
> if it turns out to not have cross platform support though I am not sure
> that is true.
>
> On Wed, Mar 18, 2015 at 10:42 PM, Michael Emory Cerquoni <
> nebadon2025 at gmail.com> wrote:
>
>> GPU is not required for PhysX there is a cpu level it can operate at as
>> well, and while GPu support is good, I would also be surprised if
>> OpenSimulator could actually fully utilize a GPU before mono would barf
>> anyway, mono can only handle so much threading and even offloading all of
>> that processing to the GPU, all that data ultimately has to flow back
>> through mono / C# / OpenSim HTTP server and I suspect there will be a huge
>> bottleneck there that would not allow for much more performance than the
>> CPU itself could handle anyway, there would likely be some improvement
>> though, the question is does that warrant the inclusion of an expensive GPU
>> in a server, its going to draw a lot more power, and will not make a lot of
>> sense in a standard data center style setup with 1U rack servers, expanding
>> rack size increases costs quite a lot, the question is does that increased
>> cost benefit performance enough to justify it, the only way to really find
>> out is to try, I wonder if InWorldz does any GPu offloading for their
>> implementation of PhysX, i suspect they do not but would be great to know
>> for sure.
>>
>> On Wed, Mar 18, 2015 at 5:15 PM, David Saunders <abitar.com at gmail.com>
>> wrote:
>>
>>> I know there be allot of grid interested in trying out the new physics
>>> when offer.
>>>
>>> THe only big drawback of people adopting the PhysX is that relies on a
>>> GPU to do its processing and not sure if you run more then one engine on a
>>> machine.
>>>
>>> I am sure smaller grids and self hosters would love it.
>>>
>>> But do correct me, I not looked into PhysX since  last year.
>>>
>>> On Wed, Mar 18, 2015 at 4:42 PM, Shaun T. Erickson <ste at smxy.org> wrote:
>>>
>>>>  It would be sad if this were ultimately for Windows only, as that
>>>> would rule out its use by a large segment of the OpenSim community.
>>>>
>>>> -ste
>>>>
>>>> On 3/18/15 4:13 PM, Sean M wrote:
>>>>
>>>>  Mike,
>>>>
>>>>  Yes, PhysX.net is the targeted wrapper.
>>>>
>>>>  Cross compatibility would be nice to maintain but is not a required
>>>> feature for this effort.
>>>>
>>>>  Best regards,
>>>> Sean Mondesire, Ph.D.
>>>> MOSES: Virtual World Research Team
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Opensim-dev mailing list
>>>> Opensim-dev at opensimulator.org
>>>> http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Opensim-dev mailing list
>>> Opensim-dev at opensimulator.org
>>> http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev
>>>
>>>
>>
>>
>> --
>> Michael Emory Cerquoni
>>
>
>
>
> --
> Michael Emory Cerquoni
>
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at opensimulator.org
> http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://opensimulator.org/pipermail/opensim-dev/attachments/20150323/a066dec1/attachment.html>


More information about the Opensim-dev mailing list