Thanks for your interest in contributing to the Daisytuner Optimizing Compiler
Collection (docc)! This guide explains how to get set up, propose changes, and
get them merged.
- Code of Conduct
- Ways to Contribute
- Getting Started
- Development Workflow
- Coding Standards
- Testing
- Submitting Changes
- Reporting Issues
Please be respectful and constructive in all interactions. Assume good intent, keep discussions focused on the technical problem, and help maintain a welcoming community.
- Report bugs using the Bug Report template.
- Request features using the Feature Request template.
- Improve documentation.
- Submit bug fixes or new features via pull requests.
- Fork the repository and clone your fork.
- Make sure submodules are initialized:
git submodule update --init --recursive
- Install the prerequisites for the component you want to work on. The project
is organized into modules, each with its own
README.md:sdfg/— core SDFG intermediate representation, interfaces, passes, and analyses.python/— Python (JIT) frontend and bindings.mlir/— MLIR dialect and PyTorch frontend.opt/— optional pass and transformation logic.rtl/— runtime libraries for instrumentation.targets/— target-specific code generation and definitions.c-compile/— C/C++ emission, compilation, and linking logic.
doccrequiresclang-19(see LLVM releases).- Install the developer tooling used for formatting and checks:
pip install pre-commit pre-commit install
- Create a topic branch from
main:git checkout -b my-feature
- Make your changes in small, focused commits with clear messages.
- Keep your branch up to date with
mainand resolve conflicts early. - Run formatters, linters, and tests locally before pushing.
This repo enforces formatting via pre-commit:
- C/C++ is formatted with
clang-format(-style=file, version 19). - Python is formatted with
black. - Trailing whitespace, end-of-file newlines, and YAML validity are checked automatically.
Run all hooks against your changes:
pre-commit run --all-filesAll changes should be covered by tests. Depending on the component:
- Python tests use
pytest, e.g.:python -m pytest python/tests/ -q
- Add unit tests for new logic and edge cases.
- Add or update integration tests when behavior crosses component or target boundaries (e.g. frontend → SDFG → target codegen).
- Keep test coverage from regressing; cover new and critical code paths.
When relevant, test against the supported targets (sequential, openmp,
cuda, rocm) for the code you touch.
- Push your branch and open a pull request against
main. - Fill out the pull request template, including the unit test, integration test, documentation, and test coverage checklists.
- Link any related issues (e.g.
Closes #123). - Ensure CI passes and address review feedback.
- A maintainer will merge once the PR is approved and green.
Before opening a new issue, search existing issues to avoid duplicates. Then use the appropriate template and provide as much detail as possible (environment, versions, reproduction steps, logs).
By contributing, you agree that your contributions will be licensed under the project's BSD license.