On Sat, Mar 16, 2019 at 11:10 AM <kmckenna@baselinesw.com> wrote:

 

 

From: NumPy-Discussion <numpy-discussion-bounces+kmckenna=baselinesw.com@python.org> On Behalf Of Charles R Harris
Sent: Saturday, March 16, 2019 12:06 PM
To: Discussion of Numerical Python <numpy-discussion@python.org>
Subject: [SPAM]Re: [Numpy-discussion] introducing Numpy.net, a pure C# implementation of Numpy

 

 

 

On Sat, Mar 16, 2019 at 10:02 AM Charles R Harris <charlesr.harris@gmail.com> wrote:

 

 

On Sat, Mar 16, 2019 at 4:41 AM <kmckenna@baselinesw.com> wrote:

This is a quick note to announce open source numpy.net available at this repository

 

https://github.com/Quansight-Labs/numpy.net

 

This is a pure C# based implementation of Numpy, ported from the underlying C library and the python application layer.

Written and tested on .NET standard 2.1 so it will run anywhere.

 

I have the vast majority of the most commonly used functions implemented and unit tested. It supports fully functional slicing and views.

Verified to generate binary compatible output with python numpy.

 

I built it because I was tasked with porting a large Python Numpy application to C# and as you may know, there are not a lot of good solutions (until now).  My employer graciously agreed to open source it.

 

If you have some time to review it, I'd love to get some feedback from some Numpy experts (I don't consider myself one).

 

I believe it is ready to start building tools like SciPy on top of it.

 

Longer term, I would like to see this ported to Java.  I expect pure C# to port easily to Java.

 

That's interesting. What parts are in C#? Any benchmarks comparing the two implementations?

 

 

What about BLAS libraries?

 

 

  1. All of it is in C#.   The underlying C code was ported and so was the python layer.
  2. Benchmarks?   If you mean performance benchmarks, I have nothing official but I will say that the C# implementation is not as fast as the optimized C code and it never will be.  The only place you would really notice it is if you were doing a UFUNC operation on a large array.
  3. I am not a numpy programmer so I don’t know what BLAS libraries are.  I just did a quick google and my guess is that this is not relevant in my implementation.

 

I envision my tool to be used if someone wants to port a numpy application to .NET or wants to do Numpy things in a .NET application,

 


Just reply to the discussion, I may have made a boo boo in replying to your first post.

I'm curious. Implementing NumPy in another language seems like quite a bit of work. Did you have any tools to make it easier? I assume the C api is gone, so that the translation is NumPy program specific. I've never used C#, was there a reason to avoid C? What about IronPython? IIRC there was some work to make NumPy run on IronPython before that project was ended. I'm also curious what the application was that made it impossible to stay with python, I suppose the customer wanted C#, but I'd like to know why plain old Python was not an option. 

Chuck