[Numpy-discussion] Objected-oriented SIMD API for Numpy
Charles R Harris
Wed Oct 21 02:13:11 CDT 2009
On Tue, Oct 20, 2009 at 11:44 PM, Mathieu Blondel <email@example.com>wrote:
> About one year ago, a high-level, objected-oriented SIMD API was added
> to Mono. For example, there is a class Vector4f for vectors of 4
> floats and this class implements methods such as basic operators,
> bitwise operators, comparison operators, min, max, sqrt, shuffle
> directly using SIMD operations. You can have a look at the following
> pages for further details:
> http://tirania.org/blog/archive/2008/Nov-03.html (blog post)
> http://go-mono.com/docs/index.aspx?tlink=0@N%3aMono.Simd (API reference)
> It seems to me that such an API would possibly be a great fit in Numpy
> too. It would also be possible to add classes that don't directly map
> to SIMD types. For example, Vector8f can easily be implemented in
> terms of 2 Vector4f. In addition to vectors, additional API may be
> added to support operations on matrices of fixed width or height.
> I search the archives for similar discussions but I only found a
> discussion about memory-alignment so I hope I am not restarting an
> existing discussion here. Memory-alignment is an import related issue
> since non-aligned movs can tank the performance.
> Any thoughts? I don't know the Numpy code base yet but I'm willing to
> help if such an effort is started.
The licenses look all hodge-podge:
- The C# compiler is dual-licensed under the MIT/X11 license and the GNU
General Public License<http://www.opensource.org/licenses/gpl-license.html>
- The tools are released under the terms of the GNU General Public
License <http://www.opensource.org/licenses/gpl-license.html> (*
- The runtime libraries are under the GNU Library GPL
(*http://www.gnu.org/copyleft/library.html#TOC1*) (LGPL 2.0).
- The class libraries are released under the terms of the MIT
- ASP.NET MVC and ASP.NET AJAX client software are released by Microsoft
under the open source Microsoft Permissive
However, if the good stuff is in the class libraries, that looks OK. But
that still leaves it in C#, no? You could have a looksie to see how it would
fit into, say, Cython. I don't know where it would go in numpy, maybe some
of the vector bits would be suitable for some generalized ufuncs. Apart from
that, I believe ATLAS can already make use of SIMD, but I have no idea how
far it goes in using the full feature set.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the NumPy-Discussion