Skip to content
/ imate Public

High-Performance Python Package for Scalable Randomized Algorithms in Linear Algebra

License

Notifications You must be signed in to change notification settings

ameli/imate

Repository files navigation

logo

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

Install

Install with pip

pypi

pip install imate

Install with conda

conda-version

conda install -c s-ameli imate

Docker Image

docker-pull deploy-docker

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 build-linux
GPU
AARCH-64 CPU
GPU
macOS X86-64 CPU build-macos
GPU 2
ARM-64 CPU
GPU 2
Windows X86-64 CPU build-windows
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

deploy-docs binder

See documentation, including:

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:

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

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.