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
pip install imate
Install with conda
conda install 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.10 |
3.11 |
3.12 |
3.13 |
3.14 |
3.9 |
3.10 |
3.11 |
||||
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.
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 |
Kepler |
Maxwell |
Pascal |
Volta |
Turing |
Ampere |
Ada |
Hopper |
Blackwell |
|---|---|---|---|---|---|---|---|---|---|
CUDA 9 |
✖ |
✖ |
✖ |
✖ |
✖ |
✖ |
✖ |
✖ |
✖ |
CUDA 10 |
✔ |
✔ |
✔ |
✔ |
✔ |
✖ |
✖ |
✖ |
✖ |
CUDA 11 |
✖ |
✖ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✖ |
CUDA 12 |
✖ |
✖ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
CUDA 13 |
✖ |
✖ |
✖ |
✖ |
✔ |
✔ |
✔ |
✔ |
✔ |
Documentation
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
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.
Release files for imate 0.29.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| imate-0.29.11.tar.gz | 449.6 kB | Details |
Built distributions (wheels)
Total release size: 51.7 MB
Release files / imate-0.29.11.tar.gz
| Download URL | imate-0.29.11.tar.gz |
|---|---|
| Size | 449.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
596b2c5726764f2c87599346cd5a421b6cd7056fde486a680b2a85ce41ca311c
|
|
BLAKE2b-256 checksum How to use checksums |
eb8cbc65370700a8d225d28ec831c9af7a19713c817af07164026a4712f7509b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / imate-0.29.11-cp314-cp314-win_amd64.whl
| Download URL | imate-0.29.11-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
59a99afce7326aee5048563811782da9b98f20015a4c0d18158b3a71e98cdf1a
|
|
BLAKE2b-256 checksum How to use checksums |
95fac8224e833208d5fb0fe22cae491d742e8fcffd854f1d1d9a73fa75f0e22c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / imate-0.29.11-cp314-cp314-manylinux_2_34_x86_64.whl
| Download URL | imate-0.29.11-cp314-cp314-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 5.1 MB |
| Tags | CPython 3.14 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
ebb5b4c7dbcbe814e87e34db0f9a101d14c868e9aa538da8d47a798a4e8499fa
|
|
BLAKE2b-256 checksum How to use checksums |
cb3df6964048315da88fe92603c674ec64f106cc139624b47d4e871efb682653
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / imate-0.29.11-cp314-cp314-macosx_10_15_x86_64.whl
| Download URL | imate-0.29.11-cp314-cp314-macosx_10_15_x86_64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.14 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
128ae756857dcf8be049843386bdc30419704516f3e4b98698aa0382c429a567
|
|
BLAKE2b-256 checksum How to use checksums |
fe2c9d1fa18024cdb0b768bb36defba4b5633344427b934d3ad06079085420b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / imate-0.29.11-cp313-cp313-win_amd64.whl
| Download URL | imate-0.29.11-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 2.5 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
4c8fb3899c5db471e2d55e2c179d6528912bd731bada98ec52442bf3d9460f62
|
|
BLAKE2b-256 checksum How to use checksums |
07f721f15901153bad91d875c8efe0ccf2660839b3b33b8eb547ed35366835c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / imate-0.29.11-cp313-cp313-manylinux_2_34_x86_64.whl
| Download URL | imate-0.29.11-cp313-cp313-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 5.1 MB |
| Tags | CPython 3.13 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
b869b7b2f2277f90ff738bf87a047f08c73983f5c558bf9e509420978c462adc
|
|
BLAKE2b-256 checksum How to use checksums |
ba14feff22d588d6d08871a8baa7fcc831b991d0dc9fb62a7d98e11037a52210
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / imate-0.29.11-cp313-cp313-macosx_10_13_x86_64.whl
| Download URL | imate-0.29.11-cp313-cp313-macosx_10_13_x86_64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.13 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
988e768851f0d851bf2b2d5d985bb66f7713d203638005cb364e61935cb6bcea
|
|
BLAKE2b-256 checksum How to use checksums |
c72fe27d81d40c617b13e300be788cf9bd380bbde540b08545a565e829ccbd85
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / imate-0.29.11-cp312-cp312-win_amd64.whl
| Download URL | imate-0.29.11-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 2.5 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
247f225a903ef0a4fd9d6854e171254daf1657017963a28d77abdb4390466c7e
|
|
BLAKE2b-256 checksum How to use checksums |
7946bea0414bee2aad530fa760ab6b77f4096ed4cfc36bed9a6b9748eba0e51c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / imate-0.29.11-cp312-cp312-manylinux_2_34_x86_64.whl
| Download URL | imate-0.29.11-cp312-cp312-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 5.1 MB |
| Tags | CPython 3.12 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
2b5686406a2ddff199d32012c576e084d82cdb1da4ee558f17f86f48de593e00
|
|
BLAKE2b-256 checksum How to use checksums |
4ce29e70002cdc0c8aeb69bdefc09ab053e2b8f1c63074480b2cf84e72c970b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / imate-0.29.11-cp312-cp312-macosx_10_13_x86_64.whl
| Download URL | imate-0.29.11-cp312-cp312-macosx_10_13_x86_64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.12 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
9fcb75ec2d7f74540e4717edbd485a6c34e00f52817de46faa2cb1320e880084
|
|
BLAKE2b-256 checksum How to use checksums |
fdbd3c5cb3742e5e3b99b0d2ad07ec5f1774a0bc819353ca4e231bc881b75538
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / imate-0.29.11-cp311-cp311-win_amd64.whl
| Download URL | imate-0.29.11-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 2.5 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d44883270b86a73f4c5129f5dc65032c1be1ed665fa1ac6deca3afa20a5cca91
|
|
BLAKE2b-256 checksum How to use checksums |
34cfb7f1f3047ed2103c6e7a404bb37f53bbf36dc0ad4520aff532405b4664e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / imate-0.29.11-cp311-cp311-manylinux_2_34_x86_64.whl
| Download URL | imate-0.29.11-cp311-cp311-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 5.1 MB |
| Tags | CPython 3.11 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
3bfc9dd9d78beff2adeb72a1da9d0dac742293304b4821ace17cd1a1b66c6f34
|
|
BLAKE2b-256 checksum How to use checksums |
e8b3b80d922225fa539be39a1230d3dee1fe3bff68df3b0f29c5723454deb996
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / imate-0.29.11-cp311-cp311-macosx_10_9_x86_64.whl
| Download URL | imate-0.29.11-cp311-cp311-macosx_10_9_x86_64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.11 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
8222083da03d3d78b228a6e6b69cd371c1108be09cf92c2b5d78e8d73dce5db6
|
|
BLAKE2b-256 checksum How to use checksums |
c0f90cfeeecfcde2081ce757d7f462f35aaa01bbd66c10e9e4f74b356ac89727
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / imate-0.29.11-cp310-cp310-win_amd64.whl
| Download URL | imate-0.29.11-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 2.5 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
340bfde38d38240d8844c1d01f0520bddac11de176a6644cca9b805a2e65e54b
|
|
BLAKE2b-256 checksum How to use checksums |
8b223f36cdf5ca701a19777023c693b837f40212896c6986491173271454c819
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / imate-0.29.11-cp310-cp310-manylinux_2_34_x86_64.whl
| Download URL | imate-0.29.11-cp310-cp310-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 5.1 MB |
| Tags | CPython 3.10 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
16a1121ac0dc601e22a99d50304242ce24b22df64193071c6c6bb19e1ea9458b
|
|
BLAKE2b-256 checksum How to use checksums |
eb0e7bfae5b8b775a5b72a4831a1bcfb541cc08fdf9854f4f56366dd52a71814
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / imate-0.29.11-cp310-cp310-macosx_10_9_x86_64.whl
| Download URL | imate-0.29.11-cp310-cp310-macosx_10_9_x86_64.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.10 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
8a39081d6d2a280e832a3a468c2519ee1768f110e1dfff3da88c8017703b8b1b
|
|
BLAKE2b-256 checksum How to use checksums |
9e5e03b78292830207c0c2f9b43a6edbd030e07744ff5f8d65bd241ac60e3003
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|