[Opensim-dev] FYI: Mono's SIMD Support: Making Mono safe for Gaming

Hurliman, John john.hurliman at intel.com
Thu Nov 6 23:53:45 UTC 2008


Mono has been feature complete for C# 3.0 for a while. It's the C# 3.5 things that are missing, which are not language extensions but new libraries like linq to db and wpf.

John

-----Original Message-----
From: opensim-dev-bounces at lists.berlios.de [mailto:opensim-dev-bounces at lists.berlios.de] On Behalf Of Justin Clark-Casey
Sent: Thursday, November 06, 2008 3:45 PM
To: opensim-dev at lists.berlios.de
Subject: Re: [Opensim-dev] FYI: Mono's SIMD Support: Making Mono safe for Gaming

Hurliman, John wrote:
> It looks like there is a good chance Mono.Simd.dll may start using some 
> of the fancier things added in C# 3.0 like extension methods. Using 
> extension methods would also allow OpenMetaverseTypes.dll to become a 
> set of zero overhead add-ons for the accelerated types instead of thin 
> wrappers for Vector4f (which I'm told will introduce branching overhead).
> 
>  
> 
> How does everyone feel about making the C# 3.0 switch?

Does Mono implement what is required yet?  If it doesn't (and I suspect it doesn't), then this would be a blocker for us.

> 
>  
> 
> *From:* opensim-dev-bounces at lists.berlios.de 
> [mailto:opensim-dev-bounces at lists.berlios.de] *On Behalf Of *Frisby, Adam
> *Sent:* Tuesday, November 04, 2008 6:19 AM
> *To:* opensim-dev at lists.berlios.de
> *Subject:* Re: [Opensim-dev] FYI: Mono's SIMD Support: Making Mono safe 
> for Gaming
> 
>  
> 
> Hrrm, what does it take for us to implement this - can we get openmv to 
> derive from the appropriate classes internally? Etc.
> 
>  
> 
> Adam Frisby
> 
> Executive Director
> 
> Deep Think Labs
> 
>  
> 
> p: +61 (0)8 6262-9464
> 
> m: +61 (0)410 615-247
> 
> e: adam at deepthink.com.au
> 
>  
> 
> *From:* opensim-dev-bounces at lists.berlios.de 
> [mailto:opensim-dev-bounces at lists.berlios.de] *On Behalf Of *Alan M Webb
> *Sent:* Tuesday, 4 November 2008 11:02 PM
> *To:* opensim-dev at lists.berlios.de
> *Subject:* Re: [Opensim-dev] FYI: Mono's SIMD Support: Making Mono safe 
> for Gaming
> 
>  
> 
> 
> Very cool.
> 
> Best regards
> Alan
> -------------------
> T.J. Watson Research Center, Hawthorne, NY
> 1-914-784-7286
> alan_webb at us.ibm.com
> 
> *Eugen Leitl <eugen at leitl.org>*
> Sent by: opensim-dev-bounces at lists.berlios.de
> 
> 11/04/2008 08:37 AM
> 
> Please respond to
> opensim-dev at lists.berlios.de
> 
> 	
> 
> To
> 
> 	
> 
> opensim-dev at lists.berlios.de
> 
> cc
> 
> 	
> 
> Subject
> 
> 	
> 
> [Opensim-dev] FYI: Mono's SIMD Support: Making Mono safe for Gaming
> 
>  
> 
> 	
> 
> 
> 
> 
> 
> http://tirania.org/blog/archive/2008/Nov-03.html
> 
> Mono's SIMD Support: Making Mono safe for Gaming
> 
> This week at the Microsoft PDC we introduced a new feature in the Mono 
> virtual machine that we have been working on quietly and will appear in 
> our upcoming Mono 2.2 release (due in early December).
> 
> I believe we are the first VM for managed code that provides an 
> object-oriented API to the underlying CPU SIMD instructions.
> 
> In short, this means that developers will be able to use the types in 
> the Mono.Simd library and have those mapped directly to efficient vector 
> operations on the hardware that supports it.
> 
> With Mono.Simd, the core of a vector operations like updating the 
> coordinates on an existing vector like the following example will go 
> from 40-60 CPU instructions into 4 or so SSE instructions.
> 
> Vector4f Move (Vector4f [] pos, ref Vector4f delta)
> {
>                 for (int i = 0; i < pos.Length; i++)
>                                  pos [i] += delta;
> }
>                
> 
> Which in C# turns out to be a call into the method Vector4f.operator + 
> (Vector4f a, Vector4f b) that is implemented like this:
> 
> Vector3f static operator + (Vector3f a, Vector3f b)
> {
>                 return new Vector3f (a.x+b.x, a.y+b.y, a.z+b.z, a.w+b.w);
> }
>                
> 
> The core of the operation is inlined in the `Move' method and it looks 
> like this:
> 
> movups (%eax),%xmm0
> movups (%edi),%xmm1
> addps  %xmm1,%xmm0
> movups %xmm0,(%eax)
>                
> etc.
> 
> -- 
> Eugen* Leitl <a href="http://leitl.org">leitl</a> http://leitl.org
> ______________________________________________________________
> ICBM: 48.07100, 11.36820 http://www.ativel.com http://postbiota.org
> 8B29F6BE: 099D 78BA 2FD3 B014 B08A  7779 75B0 2443 8B29 F6BE
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev


-- 
justincc
Justin Clark-Casey
http://justincc.wordpress.com
_______________________________________________
Opensim-dev mailing list
Opensim-dev at lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev



More information about the Opensim-dev mailing list