Metadata-Version: 2.2
Name: docc-compiler
Version: 0.0.2
Summary: A JIT compiler for Numpy-based Python programs and bindings for stateful dataflow multigraphs (SDFG).
Author-Email: Daisytuner <hello@daisytuner.com>
Maintainer-Email: Daisytuner <hello@daisytuner.com>
License: BSD-3-Clause
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: C++
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development :: Compilers
Project-URL: Homepage, https://daisytuner.com
Project-URL: Documentation, https://docs.daisytuner.com
Project-URL: Repository, https://github.com/daisytuner/docc
Project-URL: Issues, https://github.com/daisytuner/docc/issues
Requires-Python: >=3.11
Requires-Dist: numpy>=1.19.0
Requires-Dist: scipy>=1.7.0
Description-Content-Type: text/markdown

# docc-compiler

A JIT compiler for Numpy-based Python programs targeting various hardware backends.

## Installation

```bash
pip install docc-compiler
```

## Features

- **JIT Compilation**: Automatically compile Python/NumPy code to optimized native code
- **Multiple Backends**: Support for CPU (OpenMP, SIMD), CUDA, and other accelerators
- **Stateful Dataflow Graphs (SDFGs)**: Based on a powerful intermediate representation for optimization
- **Performance Portability**: Write once, run optimized on different hardware

## Quick Start

```python
import numpy as np
import docc

@docc.program
def matrix_multiply(A, B):
    return A @ B

# Automatically compiled and optimized
A = np.random.rand(1000, 1000)
B = np.random.rand(1000, 1000)
C = matrix_multiply(A, B)
```

## Requirements

- Python >= 3.11
- NumPy >= 1.19.0

## Attribution

The Python module is implemented based on the DaCe [reference implementation](https://github.com/spcl/dace).
The license of the reference implementation is included in the licenses/ folder.

If you use the Python bindings and frontend, please cite:

```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}
}
```

## License

BSD-3 Clause
