A generic numerical library for D providing sparse tensors, linear algebra, and machine learning components.
Mir is a generic numerical library for the D programming language, focused on scientific computing and machine learning. It provides sparse tensor operations, linear algebra routines, combinatorial utilities, and specialized machine learning models like LDA for topic modeling. The library is designed as a modular ecosystem with separate packages for algorithms, random number generation, and optimization.
D developers and researchers working on numerical computing, scientific simulations, data analysis, and machine learning projects who need high-performance sparse tensor operations and linear algebra.
Mir offers a native D solution with seamless integration to optimized BLAS/LAPACK backends, modular design for flexibility, and specialized components like sparse tensors and topic modeling not commonly found in other D numerical libraries.
Mir (backports): Sparse tensors, Hoffman
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Separated projects like Mir-Algorithm and Mir-Random allow for targeted use and easier maintenance, as highlighted in the README's list of core components.
Provides DOK, COO, CSR, and CSC formats with sparse BLAS operations, enabling efficient handling of large-scale sparse data common in scientific computing.
Integrates with libraries like OpenBLAS and Intel MKL via mir-blas and mir-lapack, ensuring high-performance linear algebra routines for critical computations.
Includes Online VB LDA for topic modeling on sparse documents, a niche feature not widely available in other D numerical libraries.
CPU identification routines and LDC compiler flags (e.g., -mcpu=native) allow fine-tuned performance optimizations for specific hardware, as recommended in the dub setup.
Mir GLAS is marked as experimental and not supported, making it unreliable for production use in linear algebra despite being a core feature.
Core functionality like ndslice was moved to separate repos (e.g., Mir-Algorithm), requiring users to manage multiple dependencies and increasing setup complexity.
Built for D, which has a smaller community and fewer third-party libraries compared to languages like Python, limiting integration and support options.
Requires configuring dub with specific flags and external BLAS/LAPACK libraries, which can be cumbersome and error-prone for newcomers, as noted in the installation instructions.