https://learn.microsoft.com/en-us/dotnet/standard/simd
Is this what you're looking for?
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
Follow the wormhole through a path of communities [email protected]
https://learn.microsoft.com/en-us/dotnet/standard/simd
Is this what you're looking for?
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!
If it binds to numpy, does it not automatically use all accelerations available? I can't really believe that it binds to numpy and does not use them. Maybe a flag needs to be set? I know in rust the numpy bindings have a feature flag for blas etc.
If you don't find one that fits the requirements exactly a few benchmarks are probably best to determine which one is most suited.
Unfortunately I don't believe NumPy has any built in accelerations (other than being a C library which is fast already), though I don't really know the ins and outs. There are Python libraries that use the NumPy API or otherwise do some stuff to accelerate it on e.g. CUDA, but the Numpy.NET library as far as I know uses its own embedded Python + numpy, so as far as I can tell that wouldn't be an option.
Numpy.NET library as far as I know uses its own embedded Python + numpy,
Wtf, this is so absurd I find it hard to believe. They ship a python interpreter just to get numpy? And then wrote bindings to python instead of writing c# bindings for numpy?
Edit: wtf they really do.
Rust numpy seems to do something similar though. They have ndarray, which is independent from numpy, as a number crunching backend though. This is the part that can use blas.
The closest thing I've been able to find so far (which seems to have been under slow development by 1-2 contributors for the past couple years) is https://github.com/MPSQUARK/BAVCL which is based on ILGPU. I'll probably be keeping an eye on it though.