[Numpy-discussion] Objected-oriented SIMD API for Numpy

Charles R Harris charlesr.harris at gmail.com
Wed Oct 21 03:13:11 EDT 2009


On Tue, Oct 20, 2009 at 11:44 PM, Mathieu Blondel <mathieu at mblondel.org>wrote:

> Hello,
>
> 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>
    (*http://www.opensource.org/licenses/gpl-license.html*) (GPL).


   - The tools are released under the terms of the GNU General Public
   License <http://www.opensource.org/licenses/gpl-license.html> (*
   http://www.opensource.org/licenses/gpl-license.html*) (GPL).


   - The runtime libraries are under the GNU Library GPL
2.0<http://www.gnu.org/copyleft/library.html#TOC1>
    (*http://www.gnu.org/copyleft/library.html#TOC1*) (LGPL 2.0).


   - The class libraries are released under the terms of the MIT
X11<http://www.opensource.org/licenses/mit-license.html>
    (*http://www.opensource.org/licenses/mit-license.html*) license.


   - ASP.NET MVC and ASP.NET AJAX client software are released by Microsoft
   under the open source Microsoft Permissive
License<http://www.opensource.org/licenses/ms-pl.html>
    (*http://www.opensource.org/licenses/ms-pl.html*).

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.

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20091021/95ceeffc/attachment.html>


More information about the NumPy-Discussion mailing list