heat

Distributed tensors and Machine Learning framework with GPU and MPI acceleration in Python

https://github.com/helmholtz-analytics/heat

Science Score: 77.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 10 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    17 of 57 committers (29.8%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.1%) to scientific vocabulary

Keywords

array-api data-analytics data-processing data-science distributed gpu hpc machine-learning massive-datasets mpi mpi4py multi-gpu multi-node-cluster numpy parallelism python pytorch tensors

Keywords from Contributors

data-profilers pipeline-testing mesh datacleaner interpretability yolov5s hacking jax optimizer data-engineering
Last synced: 4 months ago · JSON representation ·

Repository

Distributed tensors and Machine Learning framework with GPU and MPI acceleration in Python

Basic Info
  • Host: GitHub
  • Owner: helmholtz-analytics
  • License: mit
  • Language: Python
  • Default Branch: main
  • Homepage: https://heat.readthedocs.io/
  • Size: 21.5 MB
Statistics
  • Stars: 223
  • Watchers: 7
  • Forks: 56
  • Open Issues: 95
  • Releases: 21
Topics
array-api data-analytics data-processing data-science distributed gpu hpc machine-learning massive-datasets mpi mpi4py multi-gpu multi-node-cluster numpy parallelism python pytorch tensors
Created over 7 years ago · Last pushed 4 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation Security

README.md


Heat is a distributed tensor framework for high performance data analytics.

Project Status

CPU/CUDA/ROCm tests Documentation Status coverage license: MIT PyPI Version Downloads Anaconda-Server Badge fair-software.eu OpenSSF Scorecard OpenSSF Best Practices DOI Benchmarks Code style: black JuRSE Code Pick of the Month

Table of Contents

What is Heat for?

Heat builds on PyTorch and mpi4py to provide high-performance computing infrastructure for memory-intensive applications within the NumPy/SciPy ecosystem.

With Heat you can: - port existing NumPy/SciPy code from single-CPU to multi-node clusters with minimal coding effort; - exploit the entire, cumulative RAM of your many nodes for memory-intensive operations and algorithms; - run your NumPy/SciPy code on GPUs (CUDA, ROCm, coming up: Apple MPS).

For a example that highlights the benefits of multi-node parallelism, hardware acceleration, and how easy this can be done with the help of Heat, see, e.g., our blog post on trucated SVD of a 200GB data set.

Check out our coverage tables to see which NumPy, SciPy, scikit-learn functions are already supported.

If you need a functionality that is not yet supported: - search existing issues and make sure to leave a comment if someone else already requested it; - open a new issue.

Check out our features and the Heat API Reference for a complete list of functionalities.

Features

  • High-performance n-dimensional arrays
  • CPU, GPU, and distributed computation using MPI
  • Powerful data analytics and machine learning methods
  • Seamless integration with the NumPy/SciPy ecosystem
  • Python array API (work in progress)

Getting Started

Go to Quick Start for a quick overview. For more details, see Installation.

You can test your setup by running the heat_test.py script:

shell mpirun -n 2 python heat_test.py

It should print something like this:

shell x is distributed: True Global DNDarray x: DNDarray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=ht.int32, device=cpu:0, split=0) Global DNDarray x: Local torch tensor on rank 0 : tensor([0, 1, 2, 3, 4], dtype=torch.int32) Local torch tensor on rank 1 : tensor([5, 6, 7, 8, 9], dtype=torch.int32)

Check out our Jupyter Notebook Tutorials, choose local to try things out on your machine, or hpc if you have access to an HPC system.

The complete documentation of the latest version is always deployed on Read the Docs.

Installation

Requirements

Basics

  • python >= 3.10
  • MPI (OpenMPI, MPICH, Intel MPI, etc.)
  • mpi4py >= 3.0.0
  • pytorch >= 2.0.0

Parallel I/O

  • h5py
  • netCDF4

GPU support

In order to do computations on your GPU(s): - your CUDA or ROCm installation must match your hardware and its drivers; - your PyTorch installation must be compiled with CUDA/ROCm support.

HPC systems

On most HPC-systems you will not be able to install/compile MPI or CUDA/ROCm yourself. Instead, you will most likely need to load a pre-installed MPI and/or CUDA/ROCm module from the module system. Maybe, you will even find PyTorch, h5py, or mpi4py as (part of) such a module. Note that for optimal performance on GPU, you need to usa an MPI library that has been compiled with CUDA/ROCm support (e.g., so-called "CUDA-aware MPI").

pip

Install the latest version with

bash pip install heat[hdf5,netcdf] where the part in brackets is a list of optional dependencies. You can omit it, if you do not need HDF5 or NetCDF support.

conda

The conda build includes all dependencies including OpenMPI. bash conda install -c conda-forge heat

Support Channels

Go ahead and ask questions on GitHub Discussions. If you found a bug or are missing a feature, then please file a new issue. You can also get in touch with us on Mattermost (sign up with your GitHub credentials). Once you log in, you can introduce yourself on the Town Square channel.

Contribution guidelines

We welcome contributions from the community, if you want to contribute to Heat, be sure to review the Contribution Guidelines and Resources before getting started!

We use GitHub issues for tracking requests and bugs, please see Discussions for general questions and discussion. You can also get in touch with us on Mattermost (sign up with your GitHub credentials). Once you log in, you can introduce yourself on the Town Square channel.

If you’re unsure where to start or how your skills fit in, reach out! You can ask us here on GitHub, by leaving a comment on a relevant issue that is already open.

If you are new to contributing to open source, this guide helps explain why, what, and how to get involved.

Resources

Parallel Computing and MPI:

mpi4py

Heat is distributed under the MIT license, see our LICENSE file.

Citing Heat

If Heat contributed to a publication, please cite our main paper.

Preferred Citation:

Götz, M., Debus, C., Coquelin, D., et al. (2020). HeAT - a Distributed and GPU-accelerated Tensor Framework for Data Analytics. In 2020 IEEE International Conference on Big Data (Big Data) (pp. 276-287). IEEE. DOI: 10.1109/BigData50022.2020.9378050.

bibtex @inproceedings{heat2020, title={{HeAT -- a Distributed and GPU-accelerated Tensor Framework for Data Analytics}}, author={Markus Götz and Charlotte Debus and Daniel Coquelin and Kai Krajsek and Claudia Comito and Philipp Knechtges and Björn Hagemeier and Michael Tarnawa and Simon Hanselmann and Martin Siggel and Achim Basermann and Achim Streit}, booktitle={2020 IEEE International Conference on Big Data (Big Data)}, year={2020}, pages={276-287}, publisher={IEEE}, doi={10.1109/BigData50022.2020.9378050} }

Other Relevant Publications

For the RSE perspective and latest benchmarks:

Hoppe, F., et al. (2025). Engineering a large-scale data analytics and array computing library for research: Heat. Electronic Communications of the EASST, 83.

bibtex @article{heat2025rse, title={Engineering a large-scale data analytics and array computing library for research: Heat}, volume={83}, url={[https://eceasst.org/index.php/eceasst/article/view/2626](https://eceasst.org/index.php/eceasst/article/view/2626)}, DOI={10.14279/eceasst.v83.2626}, journal={Electronic Communications of the EASST}, author={Hoppe, Fabian and Gutiérrez Hermosillo Muriedas, Juan Pedro and Tarnawa, Michael and Knechtges, Philipp and Hagemeier, Björn and Krajsek, Kai and Rüttgers, Alexander and Götz, Markus and Comito, Claudia}, year={2025} }

For the neural networks module (DASO):

Coquelin, D., et al. (2022). Accelerating neural network training with distributed asynchronous and selective optimization (DASO). J Big Data 9, 14.

bibtex @Article{DASO2022, author={Coquelin, Daniel and Debus, Charlotte and G{\"o}tz, Markus and von der Lehr, Fabrice and Kahn, James and Siggel, Martin and Streit, Achim}, title={Accelerating neural network training with distributed asynchronous and selective optimization (DASO)}, journal={Journal of Big Data}, year={2022}, volume={9}, number={1}, pages={14}, doi={10.1186/s40537-021-00556-1} }

For specific software versions: Please use the Zenodo DOI provided with each release.

FAQ

Work in progress...

<!-- - Users - Developers - Students - system administrators -->

Acknowledgements

This work is supported by the Helmholtz Association Initiative and Networking Fund under project number ZT-I-0003 and the Helmholtz AI platform grant.

This project has received funding from Google Summer of Code (GSoC) in 2022.

This work is partially carried out under a programme of, and funded by, the European Space Agency. Any view expressed in this repository or related publications can in no way be taken to reflect the official opinion of the European Space Agency.


Owner

  • Name: Helmholtz Analytics
  • Login: helmholtz-analytics
  • Kind: organization

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: Heat
message: 'If you use this software, please cite it as below.'
type: software
authors:
# release highlights
  - family-names: Hoppe
    given-names: Fabian
  - family-names: Osterfeld
    given-names: Fynn
  - family-names: Gutiérrez Hermosillo Muriedas
    given-names: Juan Pedro
  - family-names: Vaithinathan Aravindan
    given-names: Ashwath
  - family-names: Comito
    given-names: Claudia
  - family-names: Krajsek
    given-names: Kai
  - family-names: Nguyen Xuan
    given-names: Tu
  - family-names: Tarnawa
    given-names: Michael
  - family-names: Hees
    given-names: Jörn
# core team
  # - family-names: Comito
  #   given-names: Claudia
  - family-names: Coquelin
    given-names: Daniel
  - family-names: Debus
    given-names: Charlotte
  - family-names: Götz
    given-names: Markus
#  - family-names: Gutiérrez Hermosillo Muriedas
#    given-names: Juan Pedro
  - family-names: Hagemeier
    given-names: Björn
  # - family-names: Hoppe
  #   given-names: Fabian
  - family-names: Knechtges
    given-names: Philipp
  # - family-names: Krajsek
  #   given-names: Kai
  - family-names: Rüttgers
    given-names: Alexander
  # - family-names: Tarnawa
  #   given-names: Michael
# release contributors - add as needed below
repository-code: 'https://github.com/helmholtz-analytics/heat'
url: 'https://helmholtz-analytics.github.io/heat/'
repository: 'https://heat.readthedocs.io/en/stable/'
license: MIT
preferred-citation:
  type: conference-paper
  title: >-
    HeAT -- a Distributed and GPU-accelerated Tensor Framework for Data
    Analytics
  authors:
    - family-names: Götz
      given-names: Markus
    - family-names: Debus
      given-names: Charlotte
    - family-names: Coquelin
      given-names: Daniel
    - family-names: Krajsek
      given-names: Kai
    - family-names: Comito
      given-names: Claudia
    - family-names: Knechtges
      given-names: Philipp
    - family-names: Hagemeier
      given-names: Björn
    - family-names: Tarnawa
      given-names: Michael
    - family-names: Hanselmann
      given-names: Simon
    - family-names: Siggel
      given-names: Martin
    - family-names: Basermann
      given-names: Achim
    - family-names: Streit
      given-names: Achim
  year: 2020
  collection-title: 2020 IEEE International Conference on Big Data (IEEE Big Data 2020)
  collection-doi: 10.1109/BigData50022.2020.9378050
  conference:
    name: 2020 IEEE International Conference on Big Data (IEEE Big Data 2020)
    date-start: 2020-12-10
    date-end: 2020-12-13
  start: 276
  end: 287

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 5,444
  • Total Committers: 57
  • Avg Commits per committer: 95.509
  • Development Distribution Score (DDS): 0.78
Past Year
  • Commits: 513
  • Committers: 17
  • Avg Commits per committer: 30.176
  • Development Distribution Score (DDS): 0.69
Top Committers
Name Email Commits
Claudia Comito c****o@f****e 1,198
coquelin77 d****n@g****m 676
Michael Tarnawa m****a@f****e 560
coquelin77 d****n@f****e 546
Hoppe m****2@g****m 298
Markus Goetz m****z@k****u 286
simon u****r@s****u 232
Lena Blind l****d@f****e 213
dependabot[bot] 4****] 202
Charlotte c****s@d****e 139
Bjoern Hagemeier b****r@f****e 135
Fabian Hoppe 1****2 125
Gutiérrez Hermosillo Muriedas, Juan Pedro j****m@g****m 107
kk k****k@f****e 93
pre-commit-ci[bot] 6****] 90
simon t****v@y****e 73
Charlie Debus c****s@d****e 50
Scheib l****l@g****m 50
Jakob Ohm j****m@p****m 46
Nguyen Xuan, Tu t****2@g****m 37
Ben Bourgart b****t@f****e 36
Charlotte Debus c****s@g****m 27
Lehr, Fabrice von der f****r@d****e 24
neosunhan n****n@g****m 21
Osterfeld f****d@b****e 21
Charlotte Debus d****1@h****l 20
Berkant Palazoglu b****3@g****m 19
Debus d****h@s****e 16
Philipp Knechtges p****s@d****e 14
github-actions[bot] 4****] 9
and 27 more...

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 338
  • Total pull requests: 1,118
  • Average time to close issues: about 1 year
  • Average time to close pull requests: about 1 month
  • Total issue authors: 33
  • Total pull request authors: 46
  • Average comments per issue: 2.42
  • Average comments per pull request: 3.8
  • Merged pull requests: 778
  • Bot issues: 11
  • Bot pull requests: 641
Past Year
  • Issues: 89
  • Pull requests: 400
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 9 days
  • Issue authors: 14
  • Pull request authors: 19
  • Average comments per issue: 1.0
  • Average comments per pull request: 2.14
  • Merged pull requests: 292
  • Bot issues: 5
  • Bot pull requests: 268
Top Authors
Issue Authors
  • ClaudiaComito (117)
  • mrfh92 (74)
  • mtar (22)
  • Markus-Goetz (19)
  • coquelin77 (16)
  • github-actions[bot] (10)
  • JuanPedroGHM (9)
  • Mystic-Slice (8)
  • krajsek (7)
  • neosunhan (7)
  • Cdebus (5)
  • Hakdag97 (5)
  • Berkant03 (4)
  • TheSlimvReal (3)
  • ben-bou (3)
Pull Request Authors
  • dependabot[bot] (521)
  • mrfh92 (106)
  • ClaudiaComito (86)
  • github-actions[bot] (73)
  • mtar (71)
  • JuanPedroGHM (65)
  • pre-commit-ci[bot] (47)
  • Marc-Jindra (12)
  • Mystic-Slice (11)
  • neosunhan (10)
  • Sai-Suraj-27 (10)
  • FOsterfeld (10)
  • step-security-bot (9)
  • Berkant03 (8)
  • krajsek (6)
Top Labels
Issue Labels
enhancement (149) bug (89) stale (72) good first issue (43) documentation (27) API (22) MPI (21) linalg (20) workflows (20) interoperability (18) testing (15) high-level functions (15) GSoC (14) student project (13) I/O (12) ESAPCA (11) redistribution (11) indexing (10) benchmarking (10) sparse (10) CI (9) :exclamation: (9) bug :bug: (8) memory footprint (7) signal processing (7) chore (6) Data-parallel NNs / DASO (6) communication (6) array API (6) dndarray (5)
Pull Request Labels
dependencies (527) github_actions (486) workflows (198) merge queue (88) PR talk (78) documentation (67) bug (56) enhancement (55) interoperability (55) chore (47) core (45) python (41) benchmark PR (40) linalg (36) testing (35) backport stable (34) features (31) stale (23) high-level functions (18) benchmarking (18) CI (17) ESAPCA (17) backport release/1.5.x (16) GSoC (15) cluster (13) backport release/1.4.x (13) communication (13) MPI (12) sparse (11) manipulations (11)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 1,127 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 8
  • Total versions: 24
  • Total maintainers: 5
pypi.org: heat

A framework for high-performance data analytics and machine learning.

  • Versions: 24
  • Dependent Packages: 0
  • Dependent Repositories: 8
  • Downloads: 1,127 Last month
Rankings
Dependent repos count: 5.2%
Stargazers count: 5.7%
Forks count: 5.9%
Average: 7.7%
Dependent packages count: 10.1%
Downloads: 11.8%
Last synced: 4 months ago

Dependencies

.github/workflows/changelog-updater.yml actions
  • actions/checkout v2 composite
  • stefanzweifel/changelog-updater-action v1 composite
  • stefanzweifel/git-auto-commit-action v4 composite
.github/workflows/ci.yaml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • mpi4py/setup-mpi v1 composite
.github/workflows/ci_cb.yml actions
  • SvanBoxel/gitlab-mirror-and-ci-action master composite
  • actions/checkout v1 composite
.github/workflows/codesee-arch-diagram.yml actions
  • Codesee-io/codesee-action v2 composite
.github/workflows/latest-pytorch-support.yml actions
  • JasonEtco/create-an-issue v2 composite
  • actions/checkout v2 composite
  • peter-evans/create-pull-request v3 composite
.github/workflows/pytorch-latest-release.yml actions
  • actions/checkout v2 composite
.github/workflows/release-drafter.yml actions
  • release-drafter/release-drafter v5 composite
heat/core/tests/Dockerfile docker
  • fedora latest build
doc/requirements.txt pypi
  • Sphinx ==3.0.3
  • sphinx-autoapi ===1.3.0
  • sphinx-copybutton ==0.3.3
  • sphinx_rtd_theme ==0.4.3
  • sphinxcontrib-napoleon ==0.7
setup.py pypi
  • mpi4py >=3.0.0
  • numpy >=1.13.0
  • pillow >=6.0.0
  • scipy >=0.14.0
  • torch >=1.7.0,
  • torchvision >=0.8.0