imate
, short for Implicit Matrix Trace Estimator, is a modular and high-performance C++/CUDA library distributed as a Python package that provides scalable randomized algorithms for the computationally expensive matrix functions in machine learning.
pip install imate
conda install -c s-ameli imate
docker pull sameli/imate
Successful installation and tests performed on the following operating systems, architectures, and Python and PyPy versions:
Python wheels for imate
for all supported platforms and versions in the above are available through PyPI and Anaconda Cloud. If you need imate
on other platforms, architectures, and Python or PyPy versions, raise an issue on GitHub and we build its Python Wheel for you.
imate
can run on CUDA-capable multi-GPU devices. Using the docker container is the easiest way to run imate
on GPU devices. The supported GPU micro-architectures and CUDA version are as follows:
Version \ Arch | Fermi | Kepler | Maxwell | Pascal | Volta | Turing | Ampere | Hopper |
---|---|---|---|---|---|---|---|---|
CUDA 9 | ✖ | ✖ | ✖ | ✖ | ✖ | ✖ | ✖ | ✖ |
CUDA 10 | ✖ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
CUDA 11 | ✖ | ✖ | ✖ | ✔ | ✔ | ✔ | ✔ | ✔ |
CUDA 12 | ✖ | ✖ | ✖ | ✔ | ✔ | ✔ | ✔ | ✔ |
See documentation, including:
- What This Packages Does?
- Comprehensive Installation Guide
- How to Work with Docker Container?
- How to Deploy on GPU Devices?
- API Reference
- Interactive Notebook Tutorials
- Publications
imate
is scalable to very large matrices. Its core library for basic linear algebraic operations is faster than OpenBLAS, and its pseudo-random generator is a hundred-fold faster than the implementation in the standard C++ library.
Read about the performance of imate
in practical applications:
- Performance on GPU Farm
- Comparison of Randomized Algorithms
- Comparison With and Without OpenBLAS
- Interpolation of Affine Matrix Functions
We welcome contributions via GitHub's pull request. If you do not feel comfortable modifying the code, we also welcome feature requests and bug reports as GitHub issues.
If you publish work that uses imate
, please consider citing the manuscripts available here.
This project uses a BSD 3-clause license, in hopes that it will be accessible to most projects. If you require a different license, please raise an issue and we will consider a dual license.