Re: [Mono-dev] mono 4.0.0 xbuild won't build project
S Sent via the Samsung Galaxy S® 6, an ATT 4G LTE smartphone Original message From: Timotheus Pokorra timotheus.poko...@solidcharity.com Date: 06/05/2015 11:31 AM (GMT-06:00) To: Cyd Haselton chasel...@gmail.com Cc: mono-devel-list@lists.ximian.com Subject: Re: [Mono-dev] mono 4.0.0 xbuild won't build project Hello Cyd, System.DateTime.Now System.TimeZoneNotFoundException: Exception of type 'System.TimeZoneNotFoundException' was thrown. This sounds familiar. I had that recently on Fedora for ppc64le. see my comment: https://bugzilla.redhat.com/show_bug.cgi?id=1224945#c1 quote The exception is thrown here: https://github.com/mono/mono/blob/mono-4.0.0-branch/mcs/class/corlib/System/TimeZoneInfo.cs#L88 Please have a look at the function TimeZoneInfo CreateLocal () at https://github.com/mono/mono/blob/mono-4.0.0-branch/mcs/class/corlib/System/TimeZoneInfo.cs#L121 This refers also to https://github.com/mono/mono/blob/mono-4.0.0-branch/mcs/class/corlib/System/TimeZoneInfo.cs#L163 defining timeZoneDirectory enclosed in #if LIBC. /quote hope this helps, Timotheus ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
[Mono-dev] compile broken in trunk
I found the compiling broken in trunk/mcs. I pulled the a fresh svn working directory and it still did not compile. Here is the error I got: make[3]: Entering directory `/home/jmaine/mono_source/mcs' make profile-do--net_1_1--all profile-do--net_2_0--all profile-do--net_3_5--all profile-do--net_2_1--all make[4]: Entering directory `/home/jmaine/mono_source/mcs' make PROFILE=basic all make[5]: Entering directory `/home/jmaine/mono_source/mcs' make[6]: Entering directory `/home/jmaine/mono_source/mcs/build' make all-local make[7]: Entering directory `/home/jmaine/mono_source/mcs/build' test -n '' make[7]: *** [common/Consts.cs] Error 1 make[7]: Leaving directory `/home/jmaine/mono_source/mcs/build' make[6]: *** [do-all] Error 2 make[6]: Leaving directory `/home/jmaine/mono_source/mcs/build' make[5]: *** [all-recursive] Error 1 make[5]: Leaving directory `/home/jmaine/mono_source/mcs' make[4]: *** [profile-do--basic--all] Error 2 make[4]: Leaving directory `/home/jmaine/mono_source/mcs' make[3]: *** [profiles-do--all] Error 2 make[3]: Leaving directory `/home/jmaine/mono_source/mcs' make[2]: *** [all-local] Error 2 make[2]: Leaving directory `/home/jmaine/mono_source/mono/runtime' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/jmaine/mono_source/mono' make: *** [all] Error 2 I got this on r123766 -- View this message in context: http://www.nabble.com/compile-broken-in-trunk-tp21538432p21538432.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] compile broken in trunk
crashfourit wrote: I found the compiling broken in trunk/mcs. I pulled the a fresh svn working directory and it still did not compile. Here is the error I got: make[3]: Entering directory `/home/jmaine/mono_source/mcs' make profile-do--net_1_1--all profile-do--net_2_0--all profile-do--net_3_5--all profile-do--net_2_1--all make[4]: Entering directory `/home/jmaine/mono_source/mcs' make PROFILE=basic all make[5]: Entering directory `/home/jmaine/mono_source/mcs' make[6]: Entering directory `/home/jmaine/mono_source/mcs/build' make all-local make[7]: Entering directory `/home/jmaine/mono_source/mcs/build' test -n '' make[7]: *** [common/Consts.cs] Error 1 make[7]: Leaving directory `/home/jmaine/mono_source/mcs/build' make[6]: *** [do-all] Error 2 make[6]: Leaving directory `/home/jmaine/mono_source/mcs/build' make[5]: *** [all-recursive] Error 1 make[5]: Leaving directory `/home/jmaine/mono_source/mcs' make[4]: *** [profile-do--basic--all] Error 2 make[4]: Leaving directory `/home/jmaine/mono_source/mcs' make[3]: *** [profiles-do--all] Error 2 make[3]: Leaving directory `/home/jmaine/mono_source/mcs' make[2]: *** [all-local] Error 2 make[2]: Leaving directory `/home/jmaine/mono_source/mono/runtime' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/jmaine/mono_source/mono' make: *** [all] Error 2 I got this on r123766 Correction: at r123772 -- View this message in context: http://www.nabble.com/compile-broken-in-trunk-tp21538432p21539754.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] mono inlining
Rodrigo Kumpera wrote: The _MonoMethod struct is instantiated too many times on during runtime to have information added to it. The extra space would cause a huge overhead. The other issue is that the way it's doing is resolving too much metadata information. It should be done as lazily as possible. I have a similar need that I'm coding right now, once I add the required code to do so, your patch will get a lot simpler. On Mon, Jan 19, 2009 at 5:47 PM, crashfourit crashfou...@gmail.com wrote: Rodrigo Kumpera wrote: This is the wrong approach to check for the assembly, you should first strcmp for it and only after that cache the result. Don't load the assembly if it's possible to avoid so. On Mon, Jan 19, 2009 at 8:04 AM, crashfourit crashfou...@gmail.com wrote: Here is my updated patch. http://www.nabble.com/file/p21539945/trunk_mono.diff trunk_mono.diff What do you think? -- View this message in context: http://www.nabble.com/mono-inlining-tp21510132p21539945.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list Here is another updated patch. Hope it is to your liking. http://www.nabble.com/file/p21550206/trunk_mono.diff trunk_mono.diff -- View this message in context: http://www.nabble.com/mono-inlining-tp21510132p21550206.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list I'm guessing you like my patch. :) Well, the general concept of it. I'd love to see the code you are adding that will make my patch simpler. Thing objective is that I'd love to figure out how to do struct decomposition so that methods with structs as formal parameters will be able to be inlined. -- View this message in context: http://www.nabble.com/mono-inlining-tp21510132p21550920.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] mono inlining
I tried searching the source code and I couldn't find out how to set up MonoAssemblyName that is needed for mono_assembly_load (). Can I just copy the fields in mono_defaults.corlib and just change the name... or will that not work? I even tried to find where mono_defaults.corlib is set up as an example and I couldn't find it. -- View this message in context: http://www.nabble.com/mono-inlining-tp21510132p21532980.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] mono inlining
Robert Jordan wrote: crashfourit wrote: I tried searching the source code and I couldn't find out how to set up MonoAssemblyName that is needed for mono_assembly_load (). mono_assembly_load_with_partial_name (). Anyway, you should *first* try to get official approval for a new assembly from the core team, as new assemblies are often rejected as undesirable [To avoid a new assembly, you could lookup the attribute by name from the image of the method. This requires that all MonoInlineAttribute consumers are implementing this class privately in their own assembly.] Can I just copy the fields in mono_defaults.corlib and just change the name... or will that not work? It will break the MS.NET compatibility of assemblies that reference this attribute. I guess you won't be very happy if Mono.SIMD stops working on MS.NET (even if it's not optimized). Robert Who do I contact to get approval for a new assembly?? I'd be willing to put it in an existing assembly if someone would point out where (preferably someone from that core team). Anyway I implemented the patch in a way that will let it will gracefully go along its business as normal if it can't find the the attribute. I considered iterating through the attributes myself... but I decided against that because it looked a but tedious. -- View this message in context: http://www.nabble.com/mono-inlining-tp21510132p21534235.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] mono inlining
Would mono_custom_attrs_from_method(), mono_custom_attrs_from_class(), mono_custom_attrs_from_property() be what I'm looking for to look up attributes for this purpose? It does seem to a lot of work to get to the class name of a Attribute. -- View this message in context: http://www.nabble.com/mono-inlining-tp21510132p21514223.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] mono inlining
Robert Jordan wrote: crashfourit wrote: Here's the patches! Both are under the MIT/X11 license. http://www.nabble.com/file/p21521787/trunk_mcs.diff trunk_mcs.diff http://www.nabble.com/file/p21521787/trunk_mono.diff trunk_mono.diff + //TODO: is that the right MonoImage?? It isn't. +MonoClass* mono_inline_class = mono_class_from_name (mono_defaults.corlib, + Mono.Runtime, MonoInlineAttribute); + Get the assembly providing the attribute with mono_assembly_load (). Don't limit Mono.Runtime to the 2.0 profile and register then assembly with framework_assemblies[] in assembly.c. Robert mono_assembly_load uses MonoAssemblyName as the assembly name. Not quite shure how to use that. -- View this message in context: http://www.nabble.com/mono-inlining-tp21510132p21524753.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] mono inlining
Rodrigo Kumpera wrote: You mean not having a size restriction for inlining methods or Mono.Simd? Well, I pretty much hate the idea of having such special casing in the jit. It won't make stuff work better and will increase the amount of voodoo inside the JIT, which is bad. And, besides that, inlining the code in Mono.Simd won't cut unless the JIT implements a value-scalar replacement optimization to decompose vtype members into regular scalar ops. What would be useful would be JIT hinting to force inlining. This would be more broad and useful. This has been discussed before and had a general agreement that would be useful. Feel free to implement both optimizations, I'll gladly review them. Cheers, Rodrigo On Fri, Jan 16, 2009 at 8:55 PM, crashfourit crashfou...@gmail.com wrote: I was wondering what would people here think about ignoring the inline_limit_inited on line 3332 in method_to_ir.c for a few specific cases: Operator overloads, getters and setters, and the methods in Vector4f when they are not being accelerated. You mean make an attribute that when used on a method or a class will hint to the jit to ignore the method size limit? I know where to put the changes for that.. but however I really don't know how to check for an attribute in the jit engine. I'll try to find out myself but any hints would be useful. And, besides that, inlining the code in Mono.Simd won't cut unless the JIT implements a value-scalar replacement optimization to decompose vtype members into regular scalar ops. And why is this the case? -- View this message in context: http://www.nabble.com/mono-inlining-tp21510132p21512361.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
[Mono-dev] Missing operator: Mono.Simd
I just realized that operator '~' (bitwize negation) is not defined in mono.simd Is there any possibility that could be added? -- View this message in context: http://www.nabble.com/Missing-operator%3A-Mono.Simd-tp21490139p21490139.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] Missing operator: Mono.Simd
Also it would be nice to have Vector4f.CopySign() too. -- View this message in context: http://www.nabble.com/Missing-operator%3A-Mono.Simd-tp21490139p21490913.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] simd: more accelerated classes (Offensive Word Found In Message)
Miguel de Icaza-2 wrote: Hello, Lets get it on Mono SVN, email me your SSH keys and I will open the accounts. Sounds good to me. Please feel free to make use of the code in OpenMetaverseTypes. As far as hosting services, I've had the best luck with Google Code but would be fine with anything. John -Original Message- From: mono-devel-list-boun...@lists.ximian.com [mailto:mono-devel-list- boun...@lists.ximian.com] On Behalf Of crashfourit Sent: Tuesday, January 13, 2009 4:32 PM To: mono-devel-list@lists.ximian.com Subject: Re: [Mono-dev] simd: more accelerated classes Well, I decided to be the first to get off his rear to set it up (that I know of). I'm setting up the project right as I'm typing. When its up, you can join if you like. The one thing I ask it to be able to use you math code (http://www.openmetaverse.org/viewvc/index.cgi/omf/libopenmetaverse/tr u nk/OpenMetaverse/Types/) as a spring board. Alan McGovern-2 wrote: That was included in the 'whatever' ;) There are probably a dozen more out there that haven't been mentioned yet. It's up to the people who'll be contributing to this project (or at least the guy who gets off his ass and takes charge) to decide which one suits them best ;) I'm just saying that there are much better options out there for new projects. Alan. On Wed, Jan 14, 2009 at 12:15 AM, crashfourit crashfou...@gmail.com wrote: Good point, what about sourceforge? Alan McGovern-2 wrote: There's no benefits to using mono as opposed to using any of the free hosting ones out there. Mono doesn't come with a bug tracker, it doesn't come with space to host downloads, it doesn't come with a wiki of any kind. You really should consider using a free hosting that gives you all that. For example google code, github, whatever. Alan. On Wed, Jan 14, 2009 at 12:09 AM, crashfourit crashfou...@gmail.com wrote: Rodrigo Kumpera wrote: On Tue, Jan 13, 2009 at 9:26 PM, crashfourit crashfou...@gmail.com wrote: Hurliman, John wrote: -Original Message- From: mono-devel-list-boun...@lists.ximian.com [mailto:mono-devel-list- boun...@lists.ximian.com] On Behalf Of Rodrigo Kumpera Sent: Tuesday, January 13, 2009 12:00 PM To: crashfourit Cc: mono-devel-list@lists.ximian.com Subject: Re: [Mono-dev] simd: more accelerated classes On Tue, Jan 13, 2009 at 5:50 PM, crashfourit crashfou...@gmail.com wrote: crashfourit wrote: I was wondering what it would take to use simd to acclerate this Vector4f { public float X; public float Y; public float Z;public float W; //... } instead of this Vector4f { internal float x; internal float y; internal float z; internal float w; public float X {get {return x;} set {x = value;}} public float Y {get {return y;} set {y = value;}} public float Z {get {return z;} set {z = value;}} public float W {get {return w;} set {w = value;}} //... } Any sugestions? Also, I was wondering is there any interest in accelerated versions of high level math constructs? Like, QuaternionF, QuaternionD, Matrix4f, Matrix4d, etc? -- I would love to see a library with such high level constructs that exploit Mono.Simd. I would help with it for sure, but it shouldn't be bundled with mono. I would be willing to help with this as well. I currently maintain a library called OpenMetaverseTypes (code is at http://www.openmetaverse.org/viewvc/index.cgi/omf/libopenmetaverse/tr unk/OpenMetaverse/Types/ ) which implements Vector2/3/4, Quaternion, Matrix4, Color4, Ray, and a few collections. In the future I'd like to accelerate as many of these as possible. Sharing code with another library on top of Mono.Simd would be a good start. John Is that code under the X11/MIT license? If so, we can start there. I will set up a sourceforge project for that purpose if the mono team does not want the code on there svn server. -- Let me explain the implications of shipping such library. First, it would require to be API stable, which will be a pain in the neck during the initial ramp up while the design is flushed out. Second, we really really want to stop adding non essential libraries to the shipping mono. This only increases the load on our QA team at near to no benefit for the end user. Third, as Novell offers commercial support over the entire mono stack, adding stuff increase the load on all of us mono developers that are Novell employees. This is, for me, the major reason not to add it to our core stack. It will increase the support load on my
Re: [Mono-dev] Simd struct improvements. (the .cs files)
crashfourit wrote: I have worked on the simd structs and added some properties for comonly used values (1, pi, e, 2, 1/2, etc.) and ToString() methods. I made sure it compiled. Please tell me what you think. http://www.nabble.com/file/p21406353/mono_simd_cs_improvements.diff mono_simd_cs_improvements.diff By the way, that my contribution is placed under the MIT/X11 license. Have fun! -- View this message in context: http://www.nabble.com/Simd-struct-improvements.-%28the-.cs-files%29-tp21406353p21441931.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
[Mono-dev] simd: more accelerated classes
I was wondering what it would take to use simd to acclerate this Vector4f { public float X; public float Y; public float Z; public float W; //... } instead of this Vector4f { internal float x; internal float y; internal float z; internal float w; public float X {get {return x;} set {x = value;}} public float Y {get {return y;} set {y = value;}} public float Z {get {return z;} set {z = value;}} public float W {get {return w;} set {w = value;}} //... } Any sugestions? -- View this message in context: http://www.nabble.com/simd%3A-more-accelerated-classes-tp21442105p21442105.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] simd: more accelerated classes
crashfourit wrote: I was wondering what it would take to use simd to acclerate this Vector4f { public float X; public float Y; public float Z; public float W; //... } instead of this Vector4f { internal float x; internal float y; internal float z; internal float w; public float X {get {return x;} set {x = value;}} public float Y {get {return y;} set {y = value;}} public float Z {get {return z;} set {z = value;}} public float W {get {return w;} set {w = value;}} //... } Any sugestions? Also, I was wondering is there any interest in accelerated versions of high level math constructs? Like, QuaternionF, QuaternionD, Matrix4f, Matrix4d, etc? -- View this message in context: http://www.nabble.com/simd%3A-more-accelerated-classes-tp21442105p21443126.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] simd: more accelerated classes
The general idea is to accelerate Microsoft.Xna.Framework math classes Vector4, Matrix4, Quaternion directly, since these classes are well defined to have direct access to member variables instead of use of properties. Rodrigo Kumpera wrote: It would require changing the JIT to support rewriting field operations if they belong to simd types. Anyway, I fail to see a compelling use case for such change. Been able to pass one of it's elements by reference is not one of them, as this would cripple the generated code in ways that would take away most of the advantages of Mono.Simd. On Tue, Jan 13, 2009 at 4:54 PM, crashfourit crashfou...@gmail.com wrote: I was wondering what it would take to use simd to acclerate this Vector4f { public float X; public float Y; public float Z; public float W; //... } instead of this Vector4f { internal float x; internal float y; internal float z; internal float w; public float X {get {return x;} set {x = value;}} public float Y {get {return y;} set {y = value;}} public float Z {get {return z;} set {z = value;}} public float W {get {return w;} set {w = value;}} //... } Any sugestions? -- View this message in context: http://www.nabble.com/simd%3A-more-accelerated-classes-tp21442105p21442105.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list -- View this message in context: http://www.nabble.com/simd%3A-more-accelerated-classes-tp21442105p21443490.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] simd: more accelerated classes
Rodrigo Kumpera wrote: On Tue, Jan 13, 2009 at 5:50 PM, crashfourit crashfou...@gmail.com wrote: crashfourit wrote: I was wondering what it would take to use simd to acclerate this Vector4f { public float X; public float Y; public float Z; public float W; //... } instead of this Vector4f { internal float x; internal float y; internal float z; internal float w; public float X {get {return x;} set {x = value;}} public float Y {get {return y;} set {y = value;}} public float Z {get {return z;} set {z = value;}} public float W {get {return w;} set {w = value;}} //... } Any sugestions? Also, I was wondering is there any interest in accelerated versions of high level math constructs? Like, QuaternionF, QuaternionD, Matrix4f, Matrix4d, etc? -- I would love to see a library with such high level constructs that exploit Mono.Simd. I would help with it for sure, but it shouldn't be bundled with mono. Why shouldn't it be bundled with mono? I'd at least like to have those higher level math structs in the Mono.Simd.Math or Mono.Math name space or something similar, and and have the jit engine be more agressive when inline methods in those classes. Or, have the jit engine act on those classes in a similar way to the Vector* classes in the Mono.Simd name space. On a side note, what do you think of the idea of the jit engine acting more aggressive to inline getters and setters than normal? I looked at the inline detection code, and realized this could be easily done. -- View this message in context: http://www.nabble.com/simd%3A-more-accelerated-classes-tp21442105p21443769.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] simd: more accelerated classes
I've done that. just that fixed and unsafe statements would have to be used, Pushing the args on the stack and then taking them off to multiply then putting them on the stack again for it to return can slows things down. Alan McGovern-2 wrote: I really doubt that kind of specific optimisation would ever make it into mono. Have you tried benchmarking the existing SIMD implementation and seeing what the raw performance of that is as compared to using the XNA structs with Mono.SIMD in the background? The difference shouldn't be that big. Something like this would be the implementation of the Xna struct: struct XNAVector4f { float X, Y, Z, W; public XNAVector4f Multiply (XNAVector4f other) { Mono.Simd.Vector4f v1 = (Mono.Simd.Vector4f) this; Mono.Simd.Vector4f v2 = (Mono.Simd.Vector4f) other; return *((XNAVector4f *) Mono.Simd.Vector4f.Multiply (v1, v2)); } } Alan On Tue, Jan 13, 2009 at 8:25 PM, crashfourit crashfou...@gmail.com wrote: Rodrigo Kumpera wrote: On Tue, Jan 13, 2009 at 5:50 PM, crashfourit crashfou...@gmail.com wrote: crashfourit wrote: I was wondering what it would take to use simd to acclerate this Vector4f { public float X; public float Y; public float Z; public float W; //... } instead of this Vector4f { internal float x; internal float y; internal float z; internal float w; public float X {get {return x;} set {x = value;}} public float Y {get {return y;} set {y = value;}} public float Z {get {return z;} set {z = value;}} public float W {get {return w;} set {w = value;}} //... } Any sugestions? Also, I was wondering is there any interest in accelerated versions of high level math constructs? Like, QuaternionF, QuaternionD, Matrix4f, Matrix4d, etc? -- I would love to see a library with such high level constructs that exploit Mono.Simd. I would help with it for sure, but it shouldn't be bundled with mono. Why shouldn't it be bundled with mono? I'd at least like to have those higher level math structs in the Mono.Simd.Math or Mono.Math name space or something similar, and and have the jit engine be more agressive when inline methods in those classes. Or, have the jit engine act on those classes in a similar way to the Vector* classes in the Mono.Simd name space. On a side note, what do you think of the idea of the jit engine acting more aggressive to inline getters and setters than normal? I looked at the inline detection code, and realized this could be easily done. -- View this message in context: http://www.nabble.com/simd%3A-more-accelerated-classes-tp21442105p21443769.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list -- View this message in context: http://www.nabble.com/simd%3A-more-accelerated-classes-tp21442105p21443998.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] simd: more accelerated classes
Hurliman, John wrote: -Original Message- From: mono-devel-list-boun...@lists.ximian.com [mailto:mono-devel-list- boun...@lists.ximian.com] On Behalf Of Rodrigo Kumpera Sent: Tuesday, January 13, 2009 12:00 PM To: crashfourit Cc: mono-devel-list@lists.ximian.com Subject: Re: [Mono-dev] simd: more accelerated classes On Tue, Jan 13, 2009 at 5:50 PM, crashfourit crashfou...@gmail.com wrote: crashfourit wrote: I was wondering what it would take to use simd to acclerate this Vector4f { public float X; public float Y; public float Z;public float W;//... } instead of this Vector4f { internal float x; internal float y; internal float z; internal float w; public float X {get {return x;} set {x = value;}} public float Y {get {return y;} set {y = value;}} public float Z {get {return z;} set {z = value;}} public float W {get {return w;} set {w = value;}} //... } Any sugestions? Also, I was wondering is there any interest in accelerated versions of high level math constructs? Like, QuaternionF, QuaternionD, Matrix4f, Matrix4d, etc? -- I would love to see a library with such high level constructs that exploit Mono.Simd. I would help with it for sure, but it shouldn't be bundled with mono. I would be willing to help with this as well. I currently maintain a library called OpenMetaverseTypes (code is at http://www.openmetaverse.org/viewvc/index.cgi/omf/libopenmetaverse/trunk/OpenMetaverse/Types/) which implements Vector2/3/4, Quaternion, Matrix4, Color4, Ray, and a few collections. In the future I'd like to accelerate as many of these as possible. Sharing code with another library on top of Mono.Simd would be a good start. John Is that code under the X11/MIT license? If so, we can start there. I will set up a sourceforge project for that purpose if the mono team does not want the code on there svn server. -- View this message in context: http://www.nabble.com/simd%3A-more-accelerated-classes-tp21442105p21446874.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] simd: more accelerated classes
Rodrigo Kumpera wrote: On Tue, Jan 13, 2009 at 9:26 PM, crashfourit crashfou...@gmail.com wrote: Hurliman, John wrote: -Original Message- From: mono-devel-list-boun...@lists.ximian.com [mailto:mono-devel-list- boun...@lists.ximian.com] On Behalf Of Rodrigo Kumpera Sent: Tuesday, January 13, 2009 12:00 PM To: crashfourit Cc: mono-devel-list@lists.ximian.com Subject: Re: [Mono-dev] simd: more accelerated classes On Tue, Jan 13, 2009 at 5:50 PM, crashfourit crashfou...@gmail.com wrote: crashfourit wrote: I was wondering what it would take to use simd to acclerate this Vector4f { public float X; public float Y; public float Z;public float W;//... } instead of this Vector4f { internal float x; internal float y; internal float z; internal float w; public float X {get {return x;} set {x = value;}} public float Y {get {return y;} set {y = value;}} public float Z {get {return z;} set {z = value;}} public float W {get {return w;} set {w = value;}} //... } Any sugestions? Also, I was wondering is there any interest in accelerated versions of high level math constructs? Like, QuaternionF, QuaternionD, Matrix4f, Matrix4d, etc? -- I would love to see a library with such high level constructs that exploit Mono.Simd. I would help with it for sure, but it shouldn't be bundled with mono. I would be willing to help with this as well. I currently maintain a library called OpenMetaverseTypes (code is at http://www.openmetaverse.org/viewvc/index.cgi/omf/libopenmetaverse/trunk/OpenMetaverse/Types/ ) which implements Vector2/3/4, Quaternion, Matrix4, Color4, Ray, and a few collections. In the future I'd like to accelerate as many of these as possible. Sharing code with another library on top of Mono.Simd would be a good start. John Is that code under the X11/MIT license? If so, we can start there. I will set up a sourceforge project for that purpose if the mono team does not want the code on there svn server. -- Let me explain the implications of shipping such library. First, it would require to be API stable, which will be a pain in the neck during the initial ramp up while the design is flushed out. Second, we really really want to stop adding non essential libraries to the shipping mono. This only increases the load on our QA team at near to no benefit for the end user. Third, as Novell offers commercial support over the entire mono stack, adding stuff increase the load on all of us mono developers that are Novell employees. This is, for me, the major reason not to add it to our core stack. It will increase the support load on my shoulders at little gain. This is only strict related to the inclusion of such library into the lib shipped with mono. It's not the first time this issues has come before us with other libraries, such as Mono.Rocks for example, and the consensus was the same: it would be in the best interest of all parties involved to not have it included. But this doesn't mean the library can't be endorsed as the preferred one for high level usage of Mono.Simd. From the very begging we already have realized that almost everyone would not be willing to use it directly, as the lib itself is just some building blocks. As for hosting the project in the mono svn server, there isn't much of an advantage for it, really. I, for one, would rather use github for example. But if you really fancy it, please talk to Miguel, as he is the one that can make such arrangement. What would be really nice is to make a single effort for such library and make sure that the Mono.Simd side of the things are well fit for such library. Keep me posted on your efforts and I'll try to help as much as I can. Cheers, Rodrigo I, for one, would prefer the library on the mono svn if it is going to have the unofficial nod, but I'm going to see what the others here that wanted a similar library have to say. -- View this message in context: http://www.nabble.com/simd%3A-more-accelerated-classes-tp21442105p21447449.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] simd: more accelerated classes
Good point, what about sourceforge? Alan McGovern-2 wrote: There's no benefits to using mono as opposed to using any of the free hosting ones out there. Mono doesn't come with a bug tracker, it doesn't come with space to host downloads, it doesn't come with a wiki of any kind. You really should consider using a free hosting that gives you all that. For example google code, github, whatever. Alan. On Wed, Jan 14, 2009 at 12:09 AM, crashfourit crashfou...@gmail.com wrote: Rodrigo Kumpera wrote: On Tue, Jan 13, 2009 at 9:26 PM, crashfourit crashfou...@gmail.com wrote: Hurliman, John wrote: -Original Message- From: mono-devel-list-boun...@lists.ximian.com [mailto:mono-devel-list- boun...@lists.ximian.com] On Behalf Of Rodrigo Kumpera Sent: Tuesday, January 13, 2009 12:00 PM To: crashfourit Cc: mono-devel-list@lists.ximian.com Subject: Re: [Mono-dev] simd: more accelerated classes On Tue, Jan 13, 2009 at 5:50 PM, crashfourit crashfou...@gmail.com wrote: crashfourit wrote: I was wondering what it would take to use simd to acclerate this Vector4f { public float X; public float Y; public float Z;public float W;//... } instead of this Vector4f { internal float x; internal float y; internal float z; internal float w; public float X {get {return x;} set {x = value;}} public float Y {get {return y;} set {y = value;}} public float Z {get {return z;} set {z = value;}} public float W {get {return w;} set {w = value;}} //... } Any sugestions? Also, I was wondering is there any interest in accelerated versions of high level math constructs? Like, QuaternionF, QuaternionD, Matrix4f, Matrix4d, etc? -- I would love to see a library with such high level constructs that exploit Mono.Simd. I would help with it for sure, but it shouldn't be bundled with mono. I would be willing to help with this as well. I currently maintain a library called OpenMetaverseTypes (code is at http://www.openmetaverse.org/viewvc/index.cgi/omf/libopenmetaverse/trunk/OpenMetaverse/Types/ ) which implements Vector2/3/4, Quaternion, Matrix4, Color4, Ray, and a few collections. In the future I'd like to accelerate as many of these as possible. Sharing code with another library on top of Mono.Simd would be a good start. John Is that code under the X11/MIT license? If so, we can start there. I will set up a sourceforge project for that purpose if the mono team does not want the code on there svn server. -- Let me explain the implications of shipping such library. First, it would require to be API stable, which will be a pain in the neck during the initial ramp up while the design is flushed out. Second, we really really want to stop adding non essential libraries to the shipping mono. This only increases the load on our QA team at near to no benefit for the end user. Third, as Novell offers commercial support over the entire mono stack, adding stuff increase the load on all of us mono developers that are Novell employees. This is, for me, the major reason not to add it to our core stack. It will increase the support load on my shoulders at little gain. This is only strict related to the inclusion of such library into the lib shipped with mono. It's not the first time this issues has come before us with other libraries, such as Mono.Rocks for example, and the consensus was the same: it would be in the best interest of all parties involved to not have it included. But this doesn't mean the library can't be endorsed as the preferred one for high level usage of Mono.Simd. From the very begging we already have realized that almost everyone would not be willing to use it directly, as the lib itself is just some building blocks. As for hosting the project in the mono svn server, there isn't much of an advantage for it, really. I, for one, would rather use github for example. But if you really fancy it, please talk to Miguel, as he is the one that can make such arrangement. What would be really nice is to make a single effort for such library and make sure that the Mono.Simd side of the things are well fit for such library. Keep me posted on your efforts and I'll try to help as much as I can. Cheers, Rodrigo I, for one, would prefer the library on the mono svn if it is going to have the unofficial nod, but I'm going to see what the others here that wanted a similar library have to say. -- View this message in context: http://www.nabble.com/simd%3A-more-accelerated-classes-tp21442105p21447449.html Sent from the Mono - Dev mailing list
Re: [Mono-dev] simd: more accelerated classes
Well, I decided to be the first to get off his rear to set it up (that I know of). I'm setting up the project right as I'm typing. When its up, you can join if you like. The one thing I ask it to be able to use you math code (http://www.openmetaverse.org/viewvc/index.cgi/omf/libopenmetaverse/trunk/OpenMetaverse/Types/) as a spring board. Alan McGovern-2 wrote: That was included in the 'whatever' ;) There are probably a dozen more out there that haven't been mentioned yet. It's up to the people who'll be contributing to this project (or at least the guy who gets off his ass and takes charge) to decide which one suits them best ;) I'm just saying that there are much better options out there for new projects. Alan. On Wed, Jan 14, 2009 at 12:15 AM, crashfourit crashfou...@gmail.com wrote: Good point, what about sourceforge? Alan McGovern-2 wrote: There's no benefits to using mono as opposed to using any of the free hosting ones out there. Mono doesn't come with a bug tracker, it doesn't come with space to host downloads, it doesn't come with a wiki of any kind. You really should consider using a free hosting that gives you all that. For example google code, github, whatever. Alan. On Wed, Jan 14, 2009 at 12:09 AM, crashfourit crashfou...@gmail.com wrote: Rodrigo Kumpera wrote: On Tue, Jan 13, 2009 at 9:26 PM, crashfourit crashfou...@gmail.com wrote: Hurliman, John wrote: -Original Message- From: mono-devel-list-boun...@lists.ximian.com [mailto:mono-devel-list- boun...@lists.ximian.com] On Behalf Of Rodrigo Kumpera Sent: Tuesday, January 13, 2009 12:00 PM To: crashfourit Cc: mono-devel-list@lists.ximian.com Subject: Re: [Mono-dev] simd: more accelerated classes On Tue, Jan 13, 2009 at 5:50 PM, crashfourit crashfou...@gmail.com wrote: crashfourit wrote: I was wondering what it would take to use simd to acclerate this Vector4f { public float X; public float Y; public float Z;public float W; //... } instead of this Vector4f { internal float x; internal float y; internal float z; internal float w; public float X {get {return x;} set {x = value;}} public float Y {get {return y;} set {y = value;}} public float Z {get {return z;} set {z = value;}} public float W {get {return w;} set {w = value;}} //... } Any sugestions? Also, I was wondering is there any interest in accelerated versions of high level math constructs? Like, QuaternionF, QuaternionD, Matrix4f, Matrix4d, etc? -- I would love to see a library with such high level constructs that exploit Mono.Simd. I would help with it for sure, but it shouldn't be bundled with mono. I would be willing to help with this as well. I currently maintain a library called OpenMetaverseTypes (code is at http://www.openmetaverse.org/viewvc/index.cgi/omf/libopenmetaverse/trunk/OpenMetaverse/Types/ ) which implements Vector2/3/4, Quaternion, Matrix4, Color4, Ray, and a few collections. In the future I'd like to accelerate as many of these as possible. Sharing code with another library on top of Mono.Simd would be a good start. John Is that code under the X11/MIT license? If so, we can start there. I will set up a sourceforge project for that purpose if the mono team does not want the code on there svn server. -- Let me explain the implications of shipping such library. First, it would require to be API stable, which will be a pain in the neck during the initial ramp up while the design is flushed out. Second, we really really want to stop adding non essential libraries to the shipping mono. This only increases the load on our QA team at near to no benefit for the end user. Third, as Novell offers commercial support over the entire mono stack, adding stuff increase the load on all of us mono developers that are Novell employees. This is, for me, the major reason not to add it to our core stack. It will increase the support load on my shoulders at little gain. This is only strict related to the inclusion of such library into the lib shipped with mono. It's not the first time this issues has come before us with other libraries, such as Mono.Rocks for example, and the consensus was the same: it would be in the best interest of all parties involved to not have it included. But this doesn't mean the library can't be endorsed as the preferred one for high level usage of Mono.Simd. From the very begging we already have realized
[Mono-dev] Simd struct improvements. (the .cs files)
I have worked on the simd structs and added some properties for comonly used values (1, pi, e, 2, 1/2, etc.) and ToString() methods. I made sure it compiled. Please tell me what you think. http://www.nabble.com/file/p21406353/mono_simd_cs_improvements.diff mono_simd_cs_improvements.diff -- View this message in context: http://www.nabble.com/Simd-struct-improvements.-%28the-.cs-files%29-tp21406353p21406353.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] Mono simd idea
Rodrigo Kumpera wrote: There might be some significant gains on loop bodies, better inlining heuristics always help and this is something we plan on eventually look at. Right now we focusing on other areas of performance that will have some more broad results, but feel free to investigate better inlining for mono and be sure that any patches will be reviewed and accepted. Cheers, Rodrigo On Wed, Dec 31, 2008 at 4:06 AM, crashfourit crashfou...@gmail.com wrote: I wonder what kind of performance gains if the jit engine part of the mono.simd was modified to make it more aggressive on inlining code than normal. -- View this message in context: http://www.nabble.com/Mono-simd-idea-tp21227759p21227759.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list I just had an idea on how to generify the Shuffle method in Vector4f while keeping it simple. enum ShuffleSel { FromX, FromY, FromZ, FromW, } public static unsafe Vector4f Shuffle (Vector4f v1, ShuffleSel toX, ShuffleSel toY, ShuffleSel toZ, ShuffleSel toW) -- View this message in context: http://www.nabble.com/Mono-simd-idea-tp21227759p21285434.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
[Mono-dev] Mono simd problems
I have found some problems in mono.simd in 2.2 RC3. Vector4f.Shuffle(v, ShuffleSel.ExpandX) with non zero values in X and I get all zeros as a result. I checked it out and .Net does not have this problem. So, my conclusion is has to do something with the jit engine. that and : fixed (Matrix4x4 *m = this) { Vector4f *f = (Vector4f*) m; r0 = *f++; r1 = *f++; r2 = *f++; r3 = *f; } Does work on .net and not in 2.2 rc3; to get it to work I had to do this: fixed (Matrix4x4 *m = this) { r0 = *((Vector4f*) m); r1 = *((Vector4f*) (*m).m10); r2 = *((Vector4f*) (*m).m20); r3 = *((Vector4f*) (*m).m30); } Oh, and it would be nice to have Vector4f and the like to override ToString() for debugging purposes. -- View this message in context: http://www.nabble.com/Mono-simd-problems-tp21221527p21221527.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] Mono simd problems
I figgured it out; it is not Vector4f.Shuffle(v, ShuffleSel.ExpandX) by itself that causes problems. It is Vector4f.Shuffle(v, ShuffleSel.ExpandX) * v2 That doesn't work in mono 2.2 rc3 and does work on .net 3.5. I'm guessing it has to do with the jit engine in mono. -- View this message in context: http://www.nabble.com/Mono-simd-problems-tp21221527p21222330.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] Mono simd problems
Actually, Vector4f.Shuffle(v, ShuffleSel.ExpandX) is not the problem but GetVector4f(out v0, out v1, out v2, out v3) Sometimes doesn't work. It happens the most when you call this at least one c# statement between that and where the variables are declared. From what I can understand the jit engine is not producing the code to reload each of the variables into the simd registers after the call (at least part of the time). Rodrigo Kumpera wrote: Hi, I'll try to sort your problem out in time for the 2.2 release. Thanks for reporting it. Rodrigo On Tue, Dec 30, 2008 at 5:56 PM, crashfourit crashfou...@gmail.com wrote: I figgured it out; it is not by itself that causes problems. It is Vector4f.Shuffle(v, ShuffleSel.ExpandX) * v2 That doesn't work in mono 2.2 rc3 and does work on .net 3.5. I'm guessing it has to do with the jit engine in mono. -- View this message in context: http://www.nabble.com/Mono-simd-problems-tp21221527p21222330.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list -- View this message in context: http://www.nabble.com/Mono-simd-problems-tp21221527p21227565.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
[Mono-dev] Mono simd idea
I wonder what kind of performance gains if the jit engine part of the mono.simd was modified to make it more aggressive on inlining code than normal. -- View this message in context: http://www.nabble.com/Mono-simd-idea-tp21227759p21227759.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
[Mono-dev] SMID idea - memmove
I was wondering how much performance increase would we get if Mono used the SMID instructions to move data 16 bytes at a time? Like for especially for structs -- View this message in context: http://www.nabble.com/SMID-idea---memmove-tp21156590p21156590.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] mono.simd sugestions
Rodrigo Kumpera wrote: On Wed, Nov 19, 2008 at 4:23 PM, crashfourit [EMAIL PROTECTED] wrote: It would be nice to have the vector* have a constructor that takes in only one argument and fills all spots in the vector* with the same value. Like... Vector4f vector = new Vector4f(1); Second... I can really see someone doing this to use mono.simd in already established code base. [StructLayout( LayoutKind.Sequential, Pack = 0, Size = 16 )] class Vector4 { /* some user defined vector methods. .. */ private static explicit operator Vector4f(Vector4 v){ unsafe { Vector4f* p = (Vector4f*) v; return *p; } } private static explicit operator Vector4(Vector4f v){ unsafe { Vector4* p = (Vector4*) v; return *p; } } } Is it possible to accelerate these user defined operator overloads? Or do I have to resort to C# style unions? -- This code will be inlined and work like a charm. But I recommend coding it in the following way to squeeze the maximum performance out of it: public static unsafe Vector4f AsVector(ref Vector4 v){ fixed (Vector4 *f = v) { return *(Vector4f*)f; } } This will avoid the extra copy of passing the valuetype by value on stack and will inline straight to a load from the load/array element to a simd machine register. Pretty cool, isn't it? ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list How will the jit engine handle this? public static unsafe Vector4 AsVector4(ref Vector4f v){ fixed (Vector4f *f = v) { return *(Vector4*)f; } } -- View this message in context: http://www.nabble.com/mono.simd-sugestions-tp20586082p20612136.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] Mono SIMD Function Declarations and Timing
JTalton wrote: Hello, I wrote a small model editor called Golem3D. Coded in C#, it uses OpenTK for rendering using OpenGL. I helped with some of the math library for OpenTK and performed timing tests on the different function declarations. Example: 5.80public static Vector4D operator+ (Vector4D v1, Vector4D v2); static Vector4D Add(Vector4D v1, Vector4D v2); 5.50static Vector4D Add(ref Vector4D v1, ref Vector4D v2); static void Add(Vector4D v1, Vector4D v2, out result); 1.17static void Add(ref Vector4D v1, ref Vector4D v2, out result); 1.25void Add(Vector4D v); 1.00void Add(ref Vector4D v); void Add(Vector4D v, out Vector4D result); void Add(ref Vector4D v, out Vector4D result); It seems that most of the overhead is in the copying of the structure. Directly modifying a vector and passing in arguments with ref was the fastest implementation. (Tested on Windows with .NET) While passing by ref is faster, sometimes you want to be able to call a.Add(new Vector(1,1,1,1)) which does not work with ref. So I am of the opinion both declarations with parameters as ref and parameters without ref are needed. Sometimes you want to say a = b + c. In the tests, this was the slowest of all the declarations. I do think it is beneficial to have when used in non-repetitive tasks. How is this affected by the SIMD? It looks like the generated assembly from the PDC slides gets rid of much of overhead from the copying of structure. So in the case of Mono, this may not be an issue. If you run the same code under .NET (which currently does not have SIMD support), it would matter. I would like to see timing tests of the different declarations with and without SIMD. Also I'm only showing the Add function here, and other functions may accelerate further with SIMD. Other Thoughts... It would be nice to have a Vector3f since when using OpenGL you send a buffer of Vectors and with Vector4f you have a third more data to send to the graphics card. Not sure if this is doable, or if SIMD must work on a full 128 bits. I think I saw that SIMD only supported 128 bits, so a Vector of 3 doubles would not work. Is there a way to make a Vector of 3 double or 4 doubles that uses two SIMD instructons? i.e. like a Vector4D was actually 2 Vector2Ds? (I know there are some issues, but thoughts?) While it is nice to have Properties for the variables in the vector, it would be nice to have the variables exposed. This is needed since calling into the OpenGL functions would work cleaner with GL.Normal3(ref vector.X). Matrices and Quaternions? If matrices are implemented, I'd like to see them compatible with OpenGL's matrix format. Sorry if I covered anything that has been brought up before. I searched all the SIMD threads and did not see any of this covered. I plan to get the SIMD accelerated library and test some things out when I find the time. If there is anything I can do to help, from testing to reviewing interfaces to documentation, let me know. James -- View this message in context: http://n2.nabble.com/Mono-SIMD-Function-Declarations-and-Timing-tp1559946p1559946.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list Would you care to do the same tests on Mono and .Net using class instead of struct to see what happens? It would be interesting to look at. Also, include object creation in that as well. Thanks. -- View this message in context: http://www.nabble.com/Mono-SIMD-Function-Declarations-and-Timing-tp20614041p20614778.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
[Mono-dev] Monodevelop -- memory leak?
I have noticed that when I load multiple files in monodevelop or just open one and wait for about a few hours... (and leave monodevelop alone) the memory that it uses goes up to 600mb on my machine and I've actually seen this happen at least 3 times. I'm using the version of monodevelop that is shiped with mono 2.0 -- View this message in context: http://www.nabble.com/Monodevelopmemory-leak--tp20615614p20615614.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
[Mono-dev] mono.simd sugestions
It would be nice to have the vector* have a constructor that takes in only one argument and fills all spots in the vector* with the same value. Like... Vector4f vector = new Vector4f(1); Second... I can really see someone doing this to use mono.simd in already established code base. [StructLayout( LayoutKind.Sequential, Pack = 0, Size = 16 )] class Vector4 { /* some user defined vector methods. .. */ private static explicit operator Vector4f(Vector4 v){ unsafe { Vector4f* p = (Vector4f*) v; return *p; } } private static explicit operator Vector4(Vector4f v){ unsafe { Vector4* p = (Vector4*) v; return *p; } } } Is it possible to accelerate these user defined operator overloads? Or do I have to resort to C# style unions? -- View this message in context: http://www.nabble.com/mono.simd-sugestions-tp20586082p20586082.html Sent from the Mono - Dev mailing list archive at Nabble.com. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list