Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: Bug report
description: Report a spec, build, run, or verification failure
title: "[bug] "
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Build and verify failures are usually toolchain-specific, so the compiler and OS
versions matter as much as the error text. Please fill in every field.

Some specs are known to fail and are excluded from evaluation batches by code
(`EXCLUDED_SPECS` in `harness/constants.py`). Please check that list first.

- type: input
id: spec
attributes:
label: Spec
description: The spec's unique_id, or the spec file path.
placeholder: rodinia-nw-omp
validations:
required: true

- type: input
id: platform
attributes:
label: Platform and OS
description: CPU or GPU, distribution, and kernel or OS version.
placeholder: Ubuntu 24.04, x86_64, NVIDIA RTX 4070
validations:
required: true

- type: input
id: compiler
attributes:
label: Compiler and toolchain versions
description: Output of `g++ --version`, `nvcc --version`, or the OpenCL runtime version.
placeholder: g++ 13.2.0, nvcc 12.4
validations:
required: true

- type: textarea
id: command
attributes:
label: Exact command
description: The command you ran, verbatim, including the working directory.
render: shell
placeholder: |
cd ParBench
python3 -m harness verify specs/rodinia-nw-omp.json
validations:
required: true

- type: textarea
id: output
attributes:
label: Full output
description: The complete output, not an excerpt. Attach a file if it is very long.
render: shell
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected versus actual
description: What you expected to happen, and what happened instead.
validations:
required: true

- type: input
id: commit
attributes:
label: ParBench commit
description: Output of `git rev-parse --short HEAD`.
validations:
required: false
91 changes: 91 additions & 0 deletions .github/ISSUE_TEMPLATE/new-suite.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: New benchmark suite
description: Propose adding a benchmark suite to ParBench
title: "[suite] "
labels: ["new-suite"]
body:
- type: markdown
attributes:
value: |
Please read [docs/adding-a-suite.md](https://github.com/Scientific-Computing-Lab/ParBench/blob/main/docs/adding-a-suite.md)
and [CONTRIBUTING.md](https://github.com/Scientific-Computing-Lab/ParBench/blob/main/CONTRIBUTING.md)
before filing. Open this issue before
writing specs, so the pinning and licensing questions are settled first.

- type: input
id: suite
attributes:
label: Suite name
description: The slug that will prefix every unique_id, lowercase.
placeholder: mysuite
validations:
required: true

- type: input
id: upstream
attributes:
label: Upstream repository URL
validations:
required: true

- type: input
id: license
attributes:
label: Upstream license
description: ParBench does not vendor benchmark source, so the suite keeps its own license.
placeholder: BSD-3-Clause
validations:
required: true

- type: input
id: commit
attributes:
label: Pinned commit SHA
description: The full upstream commit the specs will be written against.
validations:
required: true

- type: checkboxes
id: apis
attributes:
label: APIs covered
options:
- label: CUDA
- label: OpenMP
- label: OpenCL
- label: OpenMP target offload
validations:
required: true

- type: textarea
id: kernels
attributes:
label: Proposed kernels
description: One line per kernel, with the API variants you intend to write specs for.
placeholder: |
stencil - CUDA, OpenMP
spmv - CUDA, OpenMP, OpenCL
validations:
required: true

- type: textarea
id: oracle
attributes:
label: Oracle plan
description: >-
For each kernel, the correctness oracle you intend to declare and its strength:
strong (file_hash or file_diff on a computed output), medium (numeric_comparison
against a tolerance), or weak (stdout_pattern plus exit_code). If a kernel can only
carry a weak oracle, say why - for example, the upstream references disagree across
APIs.
validations:
required: true

- type: textarea
id: build
attributes:
label: Build and run requirements
description: >-
Compilers, external data downloads, GPU requirements, and expected runtime per
kernel. Note anything that cannot run on a CPU-only machine.
validations:
required: false
25 changes: 0 additions & 25 deletions .github/PAGES_SETUP.md

This file was deleted.

21 changes: 21 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
## What this changes

<!-- One or two sentences. Link the issue this closes, if there is one. -->

## Checklist

- [ ] `bash scripts/run_public_tests.sh` passes.
- [ ] Every spec I added or changed validates:
`python3 scripts/validate_schema.py --spec specs/<unique_id>.json` exits 0.
- [ ] Every spec I added or changed verifies against its pristine baseline:
`python3 -m harness verify specs/<unique_id>.json`.
- [ ] `manifest.jsonl` changes are appended lines only. No existing entry was edited or
removed.
- [ ] Run arguments were read from the source's argument parser, not from documentation
(`python3 scripts/spec_tools/check_spec_argc.py --all`).
- [ ] No machine-specific paths, home directories, hostnames, credentials, or local
`config/paths.json` values appear in the diff.

## Platform tested

<!-- OS, CPU/GPU, and compiler versions the checks above were run on. -->
50 changes: 50 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: CI

# CPU-only sanity gate for the public repo: the spec schema validates, the
# harness package imports, and the unit suite passes on a clean clone with no
# benchmark trees fetched and no GPU. It deliberately does NOT build or run a
# kernel - every suite tree (rodinia, HeCBench, mixbench, xsbench, rsbench) is
# fetched separately, see docs/benchmark-tree-pins.md.

on:
pull_request:
push:
branches: [main]

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
# The rodinia submodule (~101 MB) buys exactly one extra passing test,
# and only after a local layout fixup, so CI skips it. Measured on a
# clean clone of the public repo: 589 passed either way.
submodules: false

- uses: actions/setup-python@v5
with:
# pyproject requires >=3.12; requirements-lock.txt was pinned on
# Ubuntu 24.04 / Python 3.12.3.
python-version: '3.12'
cache: pip
cache-dependency-path: requirements-lock.txt

- name: Install
run: |
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements-lock.txt
python3 -m pip install -e .

- name: Validate a spec against the schema
run: python3 scripts/validate_schema.py --spec specs/rodinia-nw-omp.json

- name: Import the harness package
run: python3 -c "import harness"

- name: Unit tests
# The exclusion list lives in scripts/run_public_tests.sh, the same
# runner CONTRIBUTING.md and the PR template tell contributors to use.
# Measured on a clean public clone: without the exclusions the suite is
# 43 failed / 589 passed / 112 skipped; with them it exits 0.
run: bash scripts/run_public_tests.sh
53 changes: 0 additions & 53 deletions .github/workflows/deploy-pages.yml

This file was deleted.

76 changes: 76 additions & 0 deletions CITATION.cff
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
cff-version: 1.2.0
message: "If you use ParBench, please cite both the software and the paper below."
title: "ParBench"
abstract: >-
An evaluation harness for LLM-based parallel code translation. ParBench
describes each benchmark kernel in a machine-readable spec and then builds,
runs, and verifies every LLM-produced translation, so that results are
comparable across models, benchmark suites, and translation directions
(CUDA, OpenMP, OpenCL, and OpenMP target offload).
type: software
version: "0.1.0"
date-released: "2026-08-24"
license: MIT
repository-code: "https://github.com/Scientific-Computing-Lab/ParBench"
url: "https://github.com/Scientific-Computing-Lab/ParBench"
keywords:
- benchmark
- llm-evaluation
- parallel-computing
- code-translation
- cuda
- openmp
- opencl
authors:
- given-names: "Samyak"
family-names: "Jhaveri"
affiliation: "University of California, Irvine"
- given-names: "Erel"
family-names: "Kaplan"
affiliation: "Technion"
- given-names: "Tom"
family-names: "Yotam"
affiliation: "Code Metal"
- given-names: "Le"
family-names: "Chen"
affiliation: "Argonne National Laboratory"
- given-names: "Tomer"
family-names: "Bitan"
affiliation: "Technion"
- given-names: "Niranjan"
family-names: "Hasabnis"
affiliation: "Code Metal"
- given-names: "Gal"
family-names: "Oren"
affiliation: "Stanford University, Technion"
preferred-citation:
type: conference-paper
title: >-
ParBench: A Benchmark for Reliable Evaluation of LLM Parallel Code
Translation
year: 2026
collection-title: "Proceedings of the Conference on Neural Information Processing Systems (NeurIPS 2026)"
conference:
name: "Conference on Neural Information Processing Systems (NeurIPS 2026)"
authors:
- given-names: "Samyak"
family-names: "Jhaveri"
affiliation: "University of California, Irvine"
- given-names: "Erel"
family-names: "Kaplan"
affiliation: "Technion"
- given-names: "Tom"
family-names: "Yotam"
affiliation: "Code Metal"
- given-names: "Le"
family-names: "Chen"
affiliation: "Argonne National Laboratory"
- given-names: "Tomer"
family-names: "Bitan"
affiliation: "Technion"
- given-names: "Niranjan"
family-names: "Hasabnis"
affiliation: "Code Metal"
- given-names: "Gal"
family-names: "Oren"
affiliation: "Stanford University, Technion"
Loading
Loading