Metadata-Version: 2.4
Name: imate
Version: 0.29.5
Summary: Implicit Matrix Trace Estimator. Computes the trace of functions of implicit matrices. Accelerated on CPU and CUDA-capable GPU devices.
Home-page: https://github.com/ameli/imate
Download-URL: https://github.com/ameli/imate/archive/main.zip
Author: Siavash Ameli
Author-email: sameli@berkeley.edu
Project-URL: Documentation, https://github.com/ameli/imate/blob/main/README.rst
Project-URL: Source, https://github.com/ameli/imate
Project-URL: Tracker, https://github.com/ameli/imate/issues
Keywords: matrix-computations matrix-inverse interpolation-techniques
                cholesky-decomposition randomized-algorithms lanczos-iteration
                parameter-estimation radial-basis-function polynomial-bases
                orthogonal-polynomials cross-validation
Platform: Linux
Platform: OSX
Platform: Windows
Classifier: Programming Language :: C++
Classifier: Programming Language :: Cython
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Environment :: GPU :: NVIDIA CUDA
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: Unix
Classifier: Operating System :: POSIX
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: MacOS
Classifier: Natural Language :: English
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.8
Description-Content-Type: text/x-rst
License-File: LICENSE.txt
License-File: AUTHORS.txt
Requires-Dist: numpy>1.22
Requires-Dist: scipy>=1.8
Requires-Dist: matplotlib>=2.0; implementation_name == "cpython"
Provides-Extra: extra
Requires-Dist: scikit-sparse; extra == "extra"
Provides-Extra: test
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: codecov; extra == "test"
Provides-Extra: docs
Requires-Dist: sphinx; extra == "docs"
Requires-Dist: sphinx-math-dollar; extra == "docs"
Requires-Dist: sphinx-toggleprompt<0.4; extra == "docs"
Requires-Dist: pydata_sphinx_theme==0.9.0; extra == "docs"
Requires-Dist: graphviz; extra == "docs"
Requires-Dist: sphinx-automodapi; extra == "docs"
Requires-Dist: numpydoc; extra == "docs"
Requires-Dist: nbsphinx; extra == "docs"
Requires-Dist: sphinx_design; extra == "docs"
Requires-Dist: sphinx-multitoc-numbering; extra == "docs"
Requires-Dist: pandoc; extra == "docs"
Requires-Dist: sphinx-prompt>=1.10.0; extra == "docs"
Requires-Dist: sphinx-copybutton; extra == "docs"
Requires-Dist: sphinx-gallery; extra == "docs"
Requires-Dist: sphinxext-opengraph; extra == "docs"
Requires-Dist: scipy; extra == "docs"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: download-url
Dynamic: home-page
Dynamic: keywords
Dynamic: license-file
Dynamic: platform
Dynamic: project-url
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

******
|logo|
******

``imate``, short for **I**\ mplicit **Ma**\ trix **T**\ race **E**\ stimator, 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 <https://ameli.github.io/imate>`__
* `PyPI <https://pypi.org/project/imate/>`__
* `Anaconda <https://anaconda.org/s-ameli/imate>`__
* `Docker Hub <https://hub.docker.com/r/sameli/imate>`__
* `Github <https://github.com/ameli/imate>`__

Install
=======

Install with ``pip``
--------------------

|pypi|

::

    pip install imate

Install with ``conda``
----------------------

|conda-version|

::

    conda install 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 <https://www.pypy.org/>`__ versions:

.. |y| unicode:: U+2714
.. |n| unicode:: U+2716

+----------+-----------------+--------------+-------+-------+-------+-------+-------+-------+-------+-------+-----------------+
| Platform | Arch            | Device       | Python Version                        | PyPy Version :sup:`1` | Continuous      |
+          |                 +              +-------+-------+-------+-------+-------+-------+-------+-------+ Integration     +
|          |                 |              |  3.10 |  3.11 |  3.12 |  3.13 |  3.14 |  3.9  |  3.10 |  3.11 |                 |
+==========+=================+==============+=======+=======+=======+=======+=======+=======+=======+=======+=================+
| Linux    | X86-64          | CPU          |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  | |build-linux|   |
+          +                 +--------------+-------+-------+-------+-------+-------+-------+-------+-------+                 +
|          |                 | GPU          |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |                 |
+          +-----------------+--------------+-------+-------+-------+-------+-------+-------+-------+-------+                 +
|          | AARCH-64        | CPU          |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |                 |
+          +                 +--------------+-------+-------+-------+-------+-------+-------+-------+-------+                 +
|          |                 | GPU          |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |                 |
+----------+-----------------+--------------+-------+-------+-------+-------+-------+-------+-------+-------+-----------------+
| macOS    | X86-64          | CPU          |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  | |build-macos|   |
+          +                 +--------------+-------+-------+-------+-------+-------+-------+-------+-------+                 +
|          |                 | GPU :sup:`2` |  |n|  |  |n|  |  |n|  |  |n|  |  |n|  |  |n|  |  |n|  |  |n|  |                 |
+          +-----------------+--------------+-------+-------+-------+-------+-------+-------+-------+-------+                 +
|          | ARM-64          | CPU          |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |n|  |  |y|  |  |y|  |                 |
+          +                 +--------------+-------+-------+-------+-------+-------+-------+-------+-------+                 +
|          |                 | GPU :sup:`2` |  |n|  |  |n|  |  |n|  |  |n|  |  |n|  |  |n|  |  |n|  |  |n|  |                 |
+----------+-----------------+--------------+-------+-------+-------+-------+-------+-------+-------+-------+-----------------+
| Windows  | X86-64          | CPU          |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |n|  |  |n|  |  |n|  | |build-windows| |
+          +                 +--------------+-------+-------+-------+-------+-------+-------+-------+-------+                 +
|          |                 | GPU          |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |n|  |  |n|  |  |n|  |                 |
+----------+-----------------+--------------+-------+-------+-------+-------+-------+-------+-------+-------+-----------------+

.. |build-linux| image:: https://img.shields.io/github/actions/workflow/status/ameli/imate/build-linux.yml
   :target: https://github.com/ameli/imate/actions?query=workflow%3Abuild-linux 
.. |build-macos| image:: https://img.shields.io/github/actions/workflow/status/ameli/imate/build-macos.yml
   :target: https://github.com/ameli/imate/actions?query=workflow%3Abuild-macos
.. |build-windows| image:: https://img.shields.io/github/actions/workflow/status/ameli/imate/build-windows.yml
   :target: https://github.com/ameli/imate/actions?query=workflow%3Abuild-windows

Python wheels for ``imate`` for all supported platforms and versions in the above are available through `PyPI <https://pypi.org/project/imate/>`__ and `Anaconda Cloud <https://anaconda.org/s-ameli/imate>`__. If you need ``imate`` on other platforms, architectures, and Python or PyPy versions, `raise an issue <https://github.com/ameli/imate/issues>`__ on GitHub and we build its Python Wheel for you.

.. line-block::

    :sup:`1. Our wheels for PyPy are exclusively available through pip and cannot be installed using conda.`
    :sup:`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 | Kepler  | Maxwell | Pascal  | Volta   | Turing  | Ampere  | Ada    | Hopper | Blackwell |
+=================+=========+=========+=========+=========+=========+=========+========+========+===========+
| CUDA 9          |   |n|   |   |n|   |   |n|   |   |n|   |   |n|   |   |n|   |   |n|  |   |n|  |    |n|    |
+-----------------+---------+---------+---------+---------+---------+---------+--------+--------+-----------+
| CUDA 10         |   |y|   |   |y|   |   |y|   |   |y|   |   |y|   |   |n|   |   |n|  |   |n|  |    |n|    |
+-----------------+---------+---------+---------+---------+---------+---------+--------+--------+-----------+
| CUDA 11         |   |n|   |   |n|   |   |y|   |   |y|   |   |y|   |   |y|   |   |y|  |   |y|  |    |n|    |
+-----------------+---------+---------+---------+---------+---------+---------+--------+--------+-----------+
| CUDA 12         |   |n|   |   |n|   |   |y|   |   |y|   |   |y|   |   |y|   |   |y|  |   |y|  |    |y|    |
+-----------------+---------+---------+---------+---------+---------+---------+--------+--------+-----------+
| CUDA 13         |   |n|   |   |n|   |   |n|   |   |n|   |   |y|   |   |y|   |   |y|  |   |y|  |    |y|    |
+-----------------+---------+---------+---------+---------+---------+---------+--------+--------+-----------+

Documentation
=============

|deploy-docs| |binder|

See `documentation <https://ameli.github.io/imate/index.html>`__, including:

* `What This Packages Does? <https://ameli.github.io/imate/overview.html>`__
* `Comprehensive Installation Guide <https://ameli.github.io/imate/tutorials/install.html>`__
* `How to Work with Docker Container? <https://ameli.github.io/imate/tutorials/docker.html>`__
* `How to Deploy on GPU Devices? <https://ameli.github.io/imate/tutorials/gpu.html>`__
* `API Reference <https://ameli.github.io/imate/api.html>`__
* `Interactive Notebook Tutorials <https://mybinder.org/v2/gh/ameli/glearn/HEAD?filepath=notebooks%2Fquick_start.ipynb>`__
* `Publications <https://ameli.github.io/imate/cite.html>`__

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 <https://ameli.github.io/imate/performance/gpu.html#perf-gpu>`__
* `Comparison of Randomized Algorithms <https://ameli.github.io/imate/performance/algorithms.html>`__
* `Comparison With and Without OpenBLAS <https://ameli.github.io/imate/performance/openblas.html#perf-openblas>`__
* `Interpolation of Affine Matrix Functions <https://ameli.github.io/imate/performance/interpolation.html>`__
    
How to Contribute
=================

We welcome contributions via `GitHub's pull request <https://github.com/ameli/imate/pulls>`__. If you do not feel comfortable modifying the code, we also welcome feature requests and bug reports as `GitHub issues <https://github.com/ameli/imate/issues>`__.

How to Cite
===========

If you publish work that uses ``imate``, please consider citing the manuscripts available `here <https://ameli.github.io/imate/cite.html>`__.

License
=======

|license|

This project uses a `BSD 3-clause license <https://github.com/ameli/imate/blob/main/LICENSE.txt>`__, in hopes that it will be accessible to most projects. If you require a different license, please raise an `issue <https://github.com/ameli/imate/issues>`__ and we will consider a dual license.

.. |logo| image:: https://raw.githubusercontent.com/ameli/imate/main/docs/source/_static/images/icons/logo-imate-light.svg
   :width: 160
.. |license| image:: https://img.shields.io/github/license/ameli/imate
   :target: https://opensource.org/licenses/BSD-3-Clause
.. |deploy-docs| image:: https://img.shields.io/github/actions/workflow/status/ameli/imate/deploy-docs.yml?label=docs
   :target: https://github.com/ameli/imate/actions?query=workflow%3Adeploy-docs
.. |binder| image:: https://mybinder.org/badge_logo.svg
   :target: https://mybinder.org/v2/gh/ameli/imate/HEAD?filepath=notebooks%2Fquick_start.ipynb
.. |pypi| image:: https://img.shields.io/pypi/v/imate
   :target: https://pypi.org/project/imate/
.. |deploy-docker| image:: https://img.shields.io/github/actions/workflow/status/ameli/imate/deploy-docker.yml?label=build%20docker
   :target: https://github.com/ameli/imate/actions?query=workflow%3Adeploy-docker
.. |docker-pull| image:: https://img.shields.io/docker/pulls/sameli/imate?color=green&label=downloads
   :target: https://hub.docker.com/r/sameli/imate
.. |conda-version| image:: https://img.shields.io/conda/v/s-ameli/imate
   :target: https://anaconda.org/s-ameli/imate
