possibility of blas natively in Rust
I'm a university student researching HPC under a professor, mostly using C++. In my offtime I'm researching HPC applications in Rust, just because I think Rust needs more HPC stuff natively.
One thing that has interested me in BLAS. I've tried to get it setup and it's very confusing. I think the main problem with HPC in Rust is that it's a bear to setup libraries. As part of my research into BLAS, I've discovered that any good blas implementation has its kernels implemented in Assembly, in a .S file. This is very interesting to me, since that means the C interface is just that, an interface. So, in theory all we would have to do to write a native BLAS implementation in Rust is just take all the Assembly kernels from OpenBLAS, use global\_asm! and include\_str! and extern "C" to call it from Rust, and then create the interface.
One of the problems with this is that the OpenBLAS team creates a custom version of each (major) kernel for every new CPU architecture from AMD / Intel. This introduces alot more complexity than I had originally thought.
I know the crate matrixmultiply exists, but its kernel isn't written in assembly.
In the future I also want to try and get CuBLAS working. I already have OpenMPI working flawlessly. If I can get all 3 of these to work, we have a complete HPC toolset. (CUDA also works well. Thank you Rustacuda)
Thoughts?