CompileIQ is NVIDIA's hyperparameter optimizer for tuning compiler controls. This guide is for both external community contributors and NVIDIA team members. The expected flow is: open an issue, branch from main, code, add tests, sign off your commits per the DCO, and open a pull request for review.
For installation and end-user docs, see README.md and the CompileIQ documentation. For internal architecture and module layout, see AGENTS.md.
Every commit must carry a Signed-off-by: trailer matching your git user.name and user.email. The simplest way is to use -s on every commit:
git commit -s -m "Add core manifest verification"This requirement applies to commits made on or after this guide lands; existing history is not retroactively re-signed.
If you forgot to sign off, fix it before pushing:
git commit --amend -s --no-edit # last commit
git rebase -i --signoff <upstream-base> # older commits in your branchBy signing off, you certify the following Developer Certificate of Origin for every contribution you make:
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
File issues from the templates in .github/ISSUE_TEMPLATE/:
1-bug-report.yml— bugs and regressions.2-feature-request.md— new functionality.3-question.md— usage questions.4-documentation.md— documentation gaps or errors.
For bug reports, include the CompileIQ version (pip show compileiq), Python version, OS, and a minimal reproducer. The maintainers listed in .github/CODEOWNERS triage incoming issues.
Security: Do not report security vulnerabilities through public GitHub issues or pull requests. Follow the disclosure process in SECURITY.md (web form or psirt@nvidia.com).
- Bug fix or small change — open a pull request directly; reference the issue with
closes #Nif one exists. - New feature or non-trivial enhancement — open an issue first to align on design before writing code.
- Documentation or
agent-skills/tweaks — open a pull request directly; label the related issue (if any) asdocumentation.
Prerequisites: Python 3.11–3.13, Poetry, git, and either Linux or Windows (the supported CI hosts).
External contributors fork NVIDIA/CompileIQ and add an upstream remote:
git clone https://github.com/<your-username>/CompileIQ.git
cd CompileIQ
git remote add upstream https://github.com/NVIDIA/CompileIQ.gitNVIDIA team members may clone NVIDIA/CompileIQ directly.
Install dependencies:
make install # dev dependencies (linter, typecheck, unittest, tracking)
make install-examples # add examples deps
make install-docs # add docs depsVerify your environment:
make verify-core # validate bundled core binaries against core-manifest.json
make validate # lint + typecheck + verify-core + unit testsFor deeper architecture and module-by-module orientation, see AGENTS.md.
- External contributors: branch in your fork and open a pull request against
NVIDIA/CompileIQ:main. Any branch name is fine in your fork. - NVIDIA team members: push a feature branch directly to
NVIDIA/CompileIQand open a pull request againstmain. Direct pushes tomainare not allowed — everything lands through pull request review. - Branch naming (internal): use
<github-username>/<short-description>, e.g.asrikanth/add-contributing-md. Keep it descriptive and lowercase-with-hyphens. - Long-lived branches:
main— active development; all pull requests target this.release-x.y— release branches; hotfixes only.gh-pages— managed by the docs workflow; do not push directly.
The project uses Ruff for linting and formatting and Pyright for type checking. Both are configured in pyproject.toml and pyrightconfig.json.
- Ruff: rules
EandF, line length 100, indent 4 spaces, double quotes, target Python 3.11. - Pyright: standard mode against
compileiq/andtests/. Looser checks undertests/integration/andtests/fuzz/are intentional.
Run before pushing:
make lint # ruff check
make lint-fix # ruff check --fix
make format # ruff format
make format-check # verify formatting without changes
make typecheck # pyrightMatch the patterns of existing modules; the module map in AGENTS.md is the canonical reference.
Every behavior-changing pull request must add or update tests.
The test suite has three tiers (see tests/ and AGENTS.md):
tests/unit/— fast, deterministic, no external deps.tests/integration/— mocked-core Search tests with deterministic@pytest.mark.parametrize.tests/fuzz/— Hypothesis-based with wide parameter ranges. Excluded from defaultpytestruns viaaddopts = "--ignore=tests/fuzz"inpyproject.toml. Run explicitly. SetCIQ_FUZZ_EXAMPLES=100for thorough sweeps (the nightly workflow does this).
Markers (defined in pyproject.toml):
requires_ray— needs a running Ray cluster.requires_ipc— needs real sockets or subprocesses.requires_core— runs the real core binary (not sandbox-compatible).
Commands:
make test-unit # all unit tests
make test-integration # all integration tests
make test-fuzz # fuzz tests (slow)
make test-cov # unit + integration with terminal coverage
make test-cov-html # ... with HTML coverage report
# Single test:
poetry run pytest tests/unit/test_ciq.py::TestClassName::test_method -vvvIf your change affects user-facing behavior or public API, preview the docs locally with make docs-preview (then open http://localhost:8000/latest/) and update files under docs/ as needed.
- Imperative subject, ≤ 72 characters: "Add core manifest verification", "Fix flaky single-objective integration test".
- An optional
type:prefix is used loosely in this repo —doc:,chore:,fix:. Not validated, not required. - Use the commit body to explain why when the change is not obvious from the diff.
- Reference issues with
closes #Norrefs #Nin the body or the pull-request description. - Every commit must be DCO-signed — see Signing your work. Use
git commit -s.
- Push your branch and open a pull request against
main. - Fill in
.github/PULL_REQUEST_TEMPLATE.mdend-to-end: description, checklist, test plan, and the bug-fix or new-feature code example where relevant. - Keep pull requests focused — one concern per pull request. Split refactors from behavior changes when feasible.
- Update
docs/for any public-API or user-facing change.
CI must be green before review. Required and informative checks include lint, typecheck, verify-core, unit-test (Python 3.11/3.12/3.13 × Ubuntu/Windows), integration-test, fuzz-test, run-examples, validate-binary-ss, and the wheel smoke tests. See .github/workflows/ci.yml for the full matrix.
- At least one CODEOWNERS approval is required before merge.
- Address review comments with additional commits — do not force-push during active review.
- Pull requests idle for more than 30 days may be closed; reopen when you have time to continue.
CompileIQ is distributed under the NVIDIA Software License Agreement; see LICENSE, EULA, and NOTICE for the full terms. Opening a pull request signifies acceptance of those terms in addition to the DCO sign-off above.