Re: [Mono-dev] mono 4.0.0 xbuild won't build project

2015-06-05 Thread crashfourit
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

2009-01-19 Thread crashfourit

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

2009-01-19 Thread crashfourit



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

2009-01-19 Thread crashfourit



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

2009-01-18 Thread crashfourit

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

2009-01-18 Thread crashfourit



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

2009-01-17 Thread crashfourit

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

2009-01-17 Thread crashfourit



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

2009-01-16 Thread crashfourit



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

2009-01-15 Thread crashfourit

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

2009-01-15 Thread crashfourit


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)

2009-01-14 Thread crashfourit



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)

2009-01-13 Thread crashfourit



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

2009-01-13 Thread crashfourit

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

2009-01-13 Thread crashfourit



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

2009-01-13 Thread crashfourit

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

2009-01-13 Thread crashfourit



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

2009-01-13 Thread crashfourit

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

2009-01-13 Thread crashfourit



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

2009-01-13 Thread crashfourit



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

2009-01-13 Thread crashfourit

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

2009-01-13 Thread crashfourit

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)

2009-01-11 Thread crashfourit

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

2009-01-04 Thread crashfourit



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

2008-12-30 Thread crashfourit

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

2008-12-30 Thread crashfourit

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

2008-12-30 Thread crashfourit

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

2008-12-30 Thread crashfourit

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

2008-12-24 Thread crashfourit

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

2008-11-20 Thread crashfourit



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

2008-11-20 Thread crashfourit



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?

2008-11-20 Thread crashfourit

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

2008-11-19 Thread crashfourit


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