This project has moved. For the latest updates, please go here.

Integrating SIMD support + Spatial code

Apr 12, 2015 at 2:14 AM
I was thinking of starting to integrate some SIMD support (using System.Numerics Vector<T> code) into Math.Net Numerics.

Probably the first thing I would try to do is vectorize things like DenseVector.DoAdd, DoNegate, DoSubtract, scalar multiply, dot product, etc.

I was thinking of just unrolling the loops by Vector<T>.Count and doing the actual operations using Vector<T>.

I could probably do the simple Matrix versions too (like add and subtract and other element-wise operations).

Would that be helpful? Is someone also working on that already?

I also have some spatial code that might be interesting to integrate into Math.Net - I have code for Euclidean and Projective Transforms (it uses System.Numerics). I also have an implementation of kd-tree k nearest neighbors translated from if there's interest in that (I used DenseColumnMajorMatrixStorage to represent the point clouds and query points).