this post was submitted on 27 Sep 2023
28 points (100.0% liked)

Programming

17672 readers
49 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 2 years ago
MODERATORS
 

Hi!

I'm looking for a C# library for matrix operations and preferably some linear algebra or optimization routines. Basically a NumPy/SciPy or PyTorch.

Ideally there'd be support for various backends (e.g. CPU, CUDA, OpenCL) for operations where possible.

As far as I can tell, there's Math.NET Numerics, Numpy.NET (which binds to Python's numpy), and NumSharp (which hasn't had commits since 2021), which seem to fit the bill mostly, though none are accelerated.

Otherwise, there are some libraries I've forgotten that seem to specifically target CUDA, which is too selective for my purpose. Maybe it was Hybridizer, which seems like its own compiler, which I'm not sure would work for me either.

There's also ComputeSharp which lets you write shaders directly in C#, though targets DirectX if I understand well.

The closest thing I've found is ILGPU, which seems brilliant since it JIT compiles kernels to CPU, CUDA, and OpenCL. The problem is I believe I'd need to write my own operations and kernels and essentially implement my own matrix compute library, though there seems to be some work on it, so maybe what I'm looking for is supported out of the box, minus optimization algorithms and so on.

Basically, does anyone have any pointers?

you are viewing a single comment's thread
view the rest of the comments
[–] maggoats 2 points 1 year ago

Unfortunately not, though I forgot about SIMD! It doesn't seem to support arbitrary-sized matrices or arrays out of the box, though I guess I could index the vector type myself. Still, it doesn't offer the operations I'd like, as far as I can tell.

Thanks though!