imate 0.25.2
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.
Links
Documentation
PyPI
Anaconda
Docker Hub
Github
Install
Install with pip
pip install imate
Install with conda
conda install -c s-ameli imate
Docker Image
docker pull sameli/imate
Supported Platforms
Successful installation and tests performed on the following operating systems, architectures, and Python and PyPy versions:
Platform
Arch
Device
Python Version
PyPy Version 1
Continuous
Integration
3.9
3.10
3.11
3.12
3.8
3.9
3.10
Linux
X86-64
CPU
✔
✔
✔
✔
✔
✔
✔
GPU
✔
✔
✔
✔
✔
✔
✔
AARCH-64
CPU
✔
✔
✔
✔
✔
✔
✔
GPU
✔
✔
✔
✔
✔
✔
✔
macOS
X86-64
CPU
✔
✔
✔
✔
✔
✔
✔
GPU 2
✖
✖
✖
✖
✖
✖
✖
ARM-64
CPU
✔
✔
✔
✔
✖
✔
✔
GPU 2
✖
✖
✖
✖
✖
✖
✖
Windows
X86-64
CPU
✔
✔
✔
✔
✖
✖
✖
GPU
✔
✔
✔
✔
✖
✖
✖
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.
1. Our wheels for PyPy are exclusively available through pip and cannot be installed using conda.
2. MacOS does not natively support NVIDIA GPUs.
Supported GPU Architectures
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
✖
✖
✖
✔
✔
✔
✔
✔
Documentation
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
Performance
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
How to Contribute
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.
How to Cite
If you publish work that uses imate, please consider citing the manuscripts available here.
License
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.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.