{"id":13648195,"url":"https://github.com/spcl/dace","last_synced_at":"2025-05-14T09:09:22.008Z","repository":{"id":37412467,"uuid":"172703996","full_name":"spcl/dace","owner":"spcl","description":"DaCe - Data Centric Parallel Programming","archived":false,"fork":false,"pushed_at":"2025-04-03T20:24:37.000Z","size":59002,"stargazers_count":518,"open_issues_count":203,"forks_count":133,"subscribers_count":16,"default_branch":"main","last_synced_at":"2025-04-03T20:38:58.616Z","etag":null,"topics":["cuda","fpga","high-level-synthesis","high-performance-computing","programming-language","vivado-hls"],"latest_commit_sha":null,"homepage":"http://dace.is/fast","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spcl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-26T12:05:50.000Z","updated_at":"2025-03-31T20:19:52.000Z","dependencies_parsed_at":"2023-09-25T03:58:06.230Z","dependency_job_id":"28204330-09c4-48b8-8f66-6b3394698a3e","html_url":"https://github.com/spcl/dace","commit_stats":{"total_commits":7686,"total_committers":97,"mean_commits":79.23711340206185,"dds":0.7318501170960188,"last_synced_commit":"b54a3c61baf8f0c696718ac451bb707929c33ee9"},"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spcl%2Fdace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spcl%2Fdace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spcl%2Fdace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spcl%2Fdace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spcl","download_url":"https://codeload.github.com/spcl/dace/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248335524,"owners_count":21086607,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cuda","fpga","high-level-synthesis","high-performance-computing","programming-language","vivado-hls"],"created_at":"2024-08-02T01:04:02.990Z","updated_at":"2025-04-11T03:32:53.783Z","avatar_url":"https://github.com/spcl.png","language":"Python","readme":"[![General Tests](https://github.com/spcl/dace/actions/workflows/general-ci.yml/badge.svg)](https://github.com/spcl/dace/actions/workflows/general-ci.yml)\n[![GPU Tests](https://github.com/spcl/dace/actions/workflows/gpu-ci.yml/badge.svg)](https://github.com/spcl/dace/actions/workflows/gpu-ci.yml)\n[![FPGA Tests](https://github.com/spcl/dace/actions/workflows/fpga-ci.yml/badge.svg)](https://github.com/spcl/dace/actions/workflows/fpga-ci.yml)\n[![Documentation Status](https://readthedocs.org/projects/spcldace/badge/?version=latest)](https://spcldace.readthedocs.io/en/latest/?badge=latest)\n[![PyPI version](https://badge.fury.io/py/dace.svg)](https://badge.fury.io/py/dace)\n[![codecov](https://codecov.io/gh/spcl/dace/branch/main/graph/badge.svg)](https://codecov.io/gh/spcl/dace)\n\n\n![D](dace.svg)aCe - Data-Centric Parallel Programming\n=====================================================\n\n_Decoupling domain science from performance optimization._\n\nDaCe is a [fast](https://nbviewer.org/github/spcl/dace/blob/main/tutorials/benchmarking.ipynb) parallel programming\nframework that takes code in Python/NumPy and other programming languages, and maps it to high-performance\n**CPU, GPU, and FPGA** programs, which can be optimized to achieve state-of-the-art. Internally, DaCe\nuses the Stateful DataFlow multiGraph (SDFG) *data-centric intermediate\nrepresentation*: A transformable, interactive representation of code based on\ndata movement.\nSince the input code and the SDFG are separate, it is possible to optimize a\nprogram without changing its source, so that it stays readable. On the other\nhand, transformations are customizable and user-extensible, so they can be written\nonce and reused in many applications.\nWith data-centric parallel programming, we enable **direct knowledge transfer**\nof performance optimization, regardless of the application or the target processor.\n\nDaCe generates high-performance programs for:\n * Multi-core CPUs (tested on Intel, IBM POWER9, and ARM with SVE)\n * NVIDIA GPUs and AMD GPUs (with HIP)\n * Xilinx and Intel FPGAs\n\nDaCe can be written inline in Python and transformed in the command-line/Jupyter\nNotebooks or SDFGs can be interactively modified using our [Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=phschaad.sdfv).\n\n## [For more information, see the documentation](https://spcldace.readthedocs.io/en/latest/)\n\nQuick Start\n-----------\n\nInstall DaCe with pip: `pip install dace`\n\nHaving issues? See our full [Installation and Troubleshooting Guide](https://spcldace.readthedocs.io/en/latest/setup/installation.html).\n\nUsing DaCe in Python is as simple as adding a `@dace` decorator:\n```python\nimport dace\nimport numpy as np\n\n@dace\ndef myprogram(a):\n    for i in range(a.shape[0]):\n        a[i] += i\n    return np.sum(a)\n```\n\nCalling `myprogram` with any NumPy array or GPU array (e.g., PyTorch, Numba, CuPy) will\ngenerate data-centric code, compile, and run it. From here on out, you can\n_optimize_ (interactively or automatically), _instrument_, and _distribute_\nyour code. The code creates a shared library (DLL/SO file) that can readily\nbe used in any C ABI compatible language (C/C++, FORTRAN, etc.).\n\nFor more information on how to use DaCe, see the [samples](samples) or tutorials below:\n\n* [Getting Started](https://nbviewer.jupyter.org/github/spcl/dace/blob/main/tutorials/getting_started.ipynb)\n* [Benchmarks, Instrumentation, and Performance Comparison with Other Python Compilers](https://nbviewer.jupyter.org/github/spcl/dace/blob/main/tutorials/benchmarking.ipynb)\n* [Explicit Dataflow in Python](https://nbviewer.jupyter.org/github/spcl/dace/blob/main/tutorials/explicit.ipynb)\n* [NumPy API Reference](https://nbviewer.jupyter.org/github/spcl/dace/blob/main/tutorials/numpy_frontend.ipynb)\n* [SDFG API](https://nbviewer.jupyter.org/github/spcl/dace/blob/main/tutorials/sdfg_api.ipynb)\n* [Using and Creating Transformations](https://nbviewer.jupyter.org/github/spcl/dace/blob/main/tutorials/transformations.ipynb)\n* [Extending the Code Generator](https://nbviewer.jupyter.org/github/spcl/dace/blob/main/tutorials/codegen.ipynb)\n\nPublication\n-----------\n\nThe paper for the SDFG IR can be found [here](http://www.arxiv.org/abs/1902.10345).\nOther DaCe-related publications are available on our [website](http://spcl.inf.ethz.ch/dace).\n\nIf you use DaCe, cite us:\n```bibtex\n@inproceedings{dace,\n  author    = {Ben-Nun, Tal and de~Fine~Licht, Johannes and Ziogas, Alexandros Nikolaos and Schneider, Timo and Hoefler, Torsten},\n  title     = {Stateful Dataflow Multigraphs: A Data-Centric Model for Performance Portability on Heterogeneous Architectures},\n  year      = {2019},\n  booktitle = {Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis},\n  series = {SC '19}\n}\n```\n\nContributing\n------------\nDaCe is an open-source project. We are happy to accept Pull Requests with your contributions! Please follow the [contribution guidelines](CONTRIBUTING.md) before submitting a pull request.\n\nLicense\n-------\nDaCe is published under the New BSD license, see [LICENSE](LICENSE).\n","funding_links":[],"categories":["Python","Other"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspcl%2Fdace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspcl%2Fdace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspcl%2Fdace/lists"}