Feature Request: Abstract CUDA, BLAS and FLOAT code
I've spent a lot of time looking at gonum, cockroachdb, weaviate etc and gorse is by far the best when it comes to GoLang float32 linear algebra support when it comes to SIMD and arch support. It'd be really cool if Gorse-io abstracted the floats package and blas package (possibly the cuda code to it as well).
I've also implemented vector serialization and deserialization on top of goat and different algorithms like kmeans++ and rabitq quantization using the floats package from gorse specifically. It would possibly be cool to have a library like a go-vector or something to share that with folks!
CockroachDB has the num32 package in the main db repo, Gonum has blas32, Weaviate has a distance package
Besides Gonum the others aren't apache licensed and are buried inside the repos
Thank you for your investigation. We might not move floats to a individual repository recently:
- Monorepo is preferred for Gorse. Developers can modify
floatspackage while modify Gorse. - These functions in
floatsare used by Gorse only. It's a hard work to add more functions, considering x86_64, arm64, riscv64 and etc.
Goat is separated from Gorse as well. But for GOAT, the individual repository is more convenient for CI.
Anyone need these functions feel free to copy these functions with its Apache license.