Science Score: 72.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
-
✓Academic publication links
Links to: arxiv.org -
✓Committers with academic emails
25 of 84 committers (29.8%) from academic institutions -
✓Institutional organization owner
Organization spcl has institutional domain (spcl.inf.ethz.ch) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.7%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
DaCe - Data Centric Parallel Programming
Basic Info
- Host: GitHub
- Owner: spcl
- License: bsd-3-clause
- Language: Python
- Default Branch: main
- Homepage: http://dace.is/fast
- Size: 149 MB
Statistics
- Stars: 552
- Watchers: 16
- Forks: 140
- Open Issues: 236
- Releases: 27
Topics
Metadata Files
README.md
aCe - Data-Centric Parallel Programming
Decoupling domain science from performance optimization.
DaCe is a fast parallel programming framework that takes code in Python/NumPy and other programming languages, and maps it to high-performance CPU, GPU, and FPGA programs, which can be optimized to achieve state-of-the-art. Internally, DaCe uses the Stateful DataFlow multiGraph (SDFG) data-centric intermediate representation: A transformable, interactive representation of code based on data movement. Since the input code and the SDFG are separate, it is possible to optimize a program without changing its source, so that it stays readable. On the other hand, transformations are customizable and user-extensible, so they can be written once and reused in many applications. With data-centric parallel programming, we enable direct knowledge transfer of performance optimization, regardless of the application or the target processor.
DaCe generates high-performance programs for: * Multi-core CPUs (tested on Intel, IBM POWER9, and ARM with SVE) * NVIDIA GPUs and AMD GPUs (with HIP) * Xilinx and Intel FPGAs
DaCe can be written inline in Python and transformed in the command-line/Jupyter Notebooks or SDFGs can be interactively modified using our Visual Studio Code extension.
For more information, see the documentation
Quick Start
Install DaCe with pip: pip install dace
Having issues? See our full Installation and Troubleshooting Guide.
Using DaCe in Python is as simple as adding a @dace decorator:
```python
import dace
import numpy as np
@dace def myprogram(a): for i in range(a.shape[0]): a[i] += i return np.sum(a) ```
Calling myprogram with any NumPy array or GPU array (e.g., PyTorch, Numba, CuPy) will
generate data-centric code, compile, and run it. From here on out, you can
optimize (interactively or automatically), instrument, and distribute
your code. The code creates a shared library (DLL/SO file) that can readily
be used in any C ABI compatible language (C/C++, FORTRAN, etc.).
For more information on how to use DaCe, see the samples or tutorials below:
- Getting Started
- Benchmarks, Instrumentation, and Performance Comparison with Other Python Compilers
- Explicit Dataflow in Python
- NumPy API Reference
- SDFG API
- Using and Creating Transformations
- Extending the Code Generator
Publication
The paper for the SDFG IR can be found here. Other DaCe-related publications are available on our website.
If you use DaCe, cite us:
bibtex
@inproceedings{dace,
author = {Ben-Nun, Tal and de~Fine~Licht, Johannes and Ziogas, Alexandros Nikolaos and Schneider, Timo and Hoefler, Torsten},
title = {Stateful Dataflow Multigraphs: A Data-Centric Model for Performance Portability on Heterogeneous Architectures},
year = {2019},
booktitle = {Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis},
series = {SC '19}
}
Contributing
DaCe is an open-source project. We are happy to accept Pull Requests with your contributions! Please follow the contribution guidelines before submitting a pull request.
License
DaCe is published under the New BSD license, see LICENSE.
Owner
- Name: SPCL
- Login: spcl
- Kind: organization
- Website: https://spcl.inf.ethz.ch/
- Repositories: 100
- Profile: https://github.com/spcl
Citation (CITATION.cff)
cff-version: 1.2.0
title: "DaCe - Data Centric Parallel Programming"
message: "Please cite as"
# this can be parsed from the AUTHORS file using .github/citation_format_authors.py
authors:
- family-names: Ben-Nun
given-names: Tal
- family-names: de Fine Licht
given-names: Johannes
- family-names: Nikolaos Ziogas
given-names: Alexandros
- family-names: Schneider
given-names: Timo
- family-names: Hoefler
given-names: Torsten
- family-names: De Matteis
given-names: Tiziano
- family-names: Hofer
given-names: Dominic
- family-names: Haag
given-names: Roman
- family-names: Niederer
given-names: Silvan
- family-names: Raje
given-names: Saurabh
- family-names: Schaad
given-names: Philipp
- family-names: Rausch
given-names: Oliver
- family-names: Gavrilas
given-names: Gabriel
- family-names: Ivanov
given-names: Andrei
- family-names: Lavarini
given-names: Luca
- family-names: Burger
given-names: Manuel
- family-names: Kleine
given-names: Jan
- family-names: Groner
given-names: Linus
- family-names: Backes
given-names: Thierry
- family-names: Anklin
given-names: Valentin
- family-names: Kuster
given-names: Andreas
- family-names: Baumann
given-names: Thomas
- family-names: Ates
given-names: Berke
- family-names: Scholbe
given-names: Stefan
- family-names: Johnsen
given-names: Carl-Johannes
- family-names: Widmer
given-names: Jannis
- family-names: Walo
given-names: Neville
- family-names: Trümper
given-names: Lukas
preferred-citation:
title: "Stateful Dataflow Multigraphs: A Data-Centric Model for Performance Portability on Heterogeneous Architectures"
year: "2019"
type: conference-paper
collection-title: "Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis"
conference:
name: "SC '19"
authors:
- family-names: Ben-Nun
given-names: Tal
- family-names: de Fine Licht
given-names: Johannes
- family-names: Ziogas
given-names: Alexandros Nikolaos
- family-names: Schneider
given-names: Timo
- family-names: Hoefler
given-names: Torsten
Committers
Last synced: 7 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Tal Ben-Nun | t****n@g****m | 3,418 |
| Alexandros Nikolaos Ziogas | a****s@i****h | 1,389 |
| Johannes de Fine Licht | j****s@m****k | 751 |
| Tiziano De Matteis | t****t@i****h | 365 |
| Carl Johnsen | c****n@n****k | 215 |
| Oliver Rausch | o****9@g****m | 184 |
| Philipp Schaad | s****l@g****m | 164 |
| Saurabh Raje | s****e@g****m | 153 |
| andreaskuster | m****l@a****h | 151 |
| Silvan Niederer | n****n@s****h | 112 |
| Lukas Trümper | l****r@o****e | 100 |
| Neville Walo | n****o@g****m | 83 |
| Manuel Burger | b****m@s****h | 79 |
| Marcin Copik | m****k@g****m | 75 |
| Tiziano De Matteis | t****s@i****h | 74 |
| luca | l****v@s****h | 67 |
| sscholbe | s****e@s****h | 52 |
| Philip Müller | 1****r | 49 |
| Dominic Hofer | d****6@g****m | 36 |
| am-ivanov | a****v | 34 |
| Gabriel Gavrilas | g****s@g****m | 29 |
| thobauma | t****a@e****h | 25 |
| Alexandru Calotoiu | a****u@e****h | 23 |
| Linus Groner | l****r@c****h | 21 |
| Jannis Widmer | w****a@s****h | 19 |
| dependabot[bot] | 4****] | 17 |
| BenWeber42 | b****r@i****h | 14 |
| Berke Ates | b****s@s****h | 12 |
| Fu-Chiang, Chang | f****7@g****m | 10 |
| Florian Deconinck | d****n@g****m | 10 |
| and 54 more... | ||
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 215
- Total pull requests: 1,144
- Average time to close issues: 11 months
- Average time to close pull requests: 26 days
- Total issue authors: 50
- Total pull request authors: 57
- Average comments per issue: 1.78
- Average comments per pull request: 0.65
- Merged pull requests: 801
- Bot issues: 0
- Bot pull requests: 18
Past Year
- Issues: 78
- Pull requests: 681
- Average time to close issues: 8 days
- Average time to close pull requests: 5 days
- Issue authors: 15
- Pull request authors: 25
- Average comments per issue: 0.54
- Average comments per pull request: 0.56
- Merged pull requests: 477
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- philip-paul-mueller (34)
- tbennun (29)
- FlorianDeconinck (18)
- ThrudPrimrose (16)
- edopao (12)
- pratyai (11)
- BenWeber42 (7)
- phschaad (7)
- alexnick83 (7)
- TizianoDeMatteis (5)
- rohanrayan (5)
- tim0s (5)
- lamyiowce (4)
- kylosus (4)
- gronerl (4)
Pull Request Authors
- pratyai (231)
- tbennun (149)
- phschaad (133)
- philip-paul-mueller (131)
- alexnick83 (86)
- ThrudPrimrose (61)
- romanc (36)
- mcopik (28)
- BenWeber42 (27)
- edopao (24)
- lukastruemper (23)
- Berke-Ates (20)
- dependabot[bot] (18)
- FlorianDeconinck (16)
- luca-patrignani (15)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 2
-
Total downloads:
- pypi 2,777 last-month
- Total docker downloads: 59
-
Total dependent packages: 5
(may contain duplicates) -
Total dependent repositories: 8
(may contain duplicates) - Total versions: 28
- Total maintainers: 3
pypi.org: dace
Data-Centric Parallel Programming Framework
- Homepage: https://github.com/spcl/dace
- Documentation: https://dace.readthedocs.io/
- License: BSD License
-
Latest release: 1.0.2
published 9 months ago
Rankings
spack.io: py-dace
DaCe is a fast parallel programming framework that takes code in Python/NumPy and other programming languages, and maps it to high- performance CPU, GPU, and FPGA programs, which can be optimized programmatically or interactively.
- Homepage: https://github.com/spcl/dace
- License: []
Rankings
Maintainers (1)
Dependencies
- actions/checkout v2 composite
- actions/checkout v2 composite
- actions/setup-python v2 composite
- actions/checkout v2 composite
- actions/checkout v2 composite
- actions/checkout v2 composite
- BSFishy/pip-action v1 composite
- actions/checkout v2 composite
- actions/setup-python v2 composite
- Flask ==2.3.2
- Jinja2 ==3.1.2
- MarkupSafe ==2.1.3
- PyYAML ==6.0
- Werkzeug ==2.3.5
- aenum ==3.1.12
- astunparse ==1.6.3
- blinker ==1.6.2
- certifi ==2023.7.22
- charset-normalizer ==3.1.0
- click ==8.1.3
- dill ==0.3.6
- fparser ==0.1.3
- idna ==3.4
- importlib-metadata ==6.6.0
- itsdangerous ==2.1.2
- mpmath ==1.3.0
- networkx ==3.1
- numpy ==1.24.3
- ply ==3.11
- requests ==2.31.0
- six ==1.16.0
- sympy ==1.9
- urllib3 ==2.0.3
- websockets ==11.0.3
- zipp ==3.15.0
- aenum *
- astunparse *
- dataclasses *
- dill *
- flask *
- fparser *
- networkx *
- numpy *
- ply *
- pyreadline *
- pyyaml *
- requests *
- sympy <=1.9
- typing-compat *
- websockets *