matrixmultiply
matrixmultiply_mt
Our great sponsors
matrixmultiply | matrixmultiply_mt | |
---|---|---|
4 | 1 | |
202 | 5 | |
- | - | |
6.0 | 0.0 | |
about 1 month ago | over 1 year ago | |
Rust | Rust | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
matrixmultiply
-
Help understanding the state of ndarrays and linalg in Rust.
The matrixmultiply crate from the ndarray author (https://github.com/bluss/matrixmultiply) is one such implementation. It uses the same algorithm as the BLIS project (https://www.cs.utexas.edu/users/flame/pubs/TOMS-BLIS-Analytical.pdf) to partition the problem and exploit the cache hierarchy. It isn't as well tuned as eg. Intel MKL or BLIS, but the results are very respectable.
-
faer 0.8.0 release
Do you plan to support integers as native types? I know there is an issue for the crate matrixmultiply for that, it seems it can be problematic because of overflow.
-
Faster `matrixmultiply` ?
There's a famous crate [matrixmultiply](https://github.com/bluss/matrixmultiply) for matrix-matrix multiplication in Rust. But it's a bit slow for me.
-
Nim vs Rust Benchmarks
In my benchmarks, Nim is faster than Rust:
- multithreading runtime (i.e Rayon vs Weave https://github.com/mratsim/weave)
- Cryptography: https://hackmd.io/@gnark/eccbench#Pairing
- Scientific computing / matrix multiplication: https://github.com/bluss/matrixmultiply/issues/34#issuecomme...
There is no inherent reason why a Nim program would be slower than Rust.
matrixmultiply_mt
-
Faster `matrixmultiply` ?
I forked into matrixmultiply_mt to improve performance and add multithreading. However, I cant recommend it as the original library has added a few extra kernels and layout optimizations and I recently found that the autovectorisation had broken in newer rustc versions so it is now slower than the original.
What are some alternatives?
weave - A state-of-the-art multithreading runtime: message-passing based, fast, scalable, ultra-low overhead
cblas-sys - Bindings to CBLAS (C)
rust-ndarray - ndarray: an N-dimensional array with array views, multidimensional slicing, and efficient operations
Programming-Language-Benchmarks - Yet another implementation of computer language benchmarks game
Programming-Language-Benchmark
Graal - GraalVM compiles Java applications into native executables that start instantly, scale fast, and use fewer compute resources 🚀
faer-rs - Linear algebra foundation for the Rust programming language
rust - Empowering everyone to build reliable and efficient software.
nalgebra - Linear algebra library for Rust.
cosmopolitan - build-once run-anywhere c library
manim - Animation engine for explanatory math videos