Skip to content

Add Benchmark Roadmap RFC and Complete Phase 1-4 Implementation for All QDP Benchmarks#11

Open
Copilot wants to merge 14 commits intodev-qdpfrom
copilot/draft-benchmark-roadmap-apache-mahout
Open

Add Benchmark Roadmap RFC and Complete Phase 1-4 Implementation for All QDP Benchmarks#11
Copilot wants to merge 14 commits intodev-qdpfrom
copilot/draft-benchmark-roadmap-apache-mahout

Conversation

Copy link

Copilot AI commented Jan 5, 2026

Apache Mahout QDP benchmarks lack warmup, proper cache clearing, CUDA event timing, and statistical measurement infrastructure needed for fair comparisons and publication-quality results.

Changes

New RFC Document: qdp/docs/BENCHMARK_ROADMAP.md

Comprehensive 750-line roadmap addressing:

Fairness improvements:

  • Warmup mechanism (3-5 iterations) to eliminate JIT compilation overhead
  • Cache clearing strategy: gc.collect(), torch.cuda.empty_cache(), optional L2 cache flush
  • CUDA event-based timing replacing time.perf_counter() for GPU-accurate measurements
  • Synchronization requirements at measurement boundaries

Statistical measurements:

  • Multiple runs (10-100 depending on workload) with full distribution analysis
  • Metrics: mean, median, std, min, max, percentiles (P25/P50/P75/P90/P95/P99), IQR, CV
  • Outlier detection via IQR and z-score methods

Visualization for publications:

  • Bar charts with error bars, box plots, violin plots, comparison tables
  • 300 DPI publication-ready output via matplotlib/seaborn
  • Complete BenchmarkVisualizer class implementation

Implementation plan:

  • 8-week phased roadmap from utilities to publication
  • Backward-compatible optional --statistical and --visualize flags
  • YAML configuration for reproducibility
  • References to PyTorch Helion, Triton, GPU-mode best practices

Phase 1 Implementation: Benchmark Utils Foundation

Complete implementation of the foundation modules (1,677 lines added):

New Package: qdp/qdp-python/benchmark/benchmark_utils/

  1. timing.py (247 lines):

    • warmup(): Eliminate JIT compilation overhead with configurable iterations
    • clear_all_caches(): Comprehensive cache clearing (Python GC + GPU)
    • clear_l2_cache(): Optional aggressive GPU L2 cache clearing
    • benchmark_with_cuda_events(): Precise GPU timing using CUDA events
    • benchmark_cpu_function(): CPU timing fallback for non-GPU operations
  2. statistics.py (231 lines):

    • compute_statistics(): Full statistical analysis (mean, median, std, percentiles, IQR, CV)
    • filter_outliers(): IQR and z-score based outlier detection
    • compute_confidence_interval(): Statistical confidence intervals
    • format_statistics(): Pretty console output formatting
  3. visualization.py (321 lines):

    • BenchmarkVisualizer class for publication-ready plots
    • Bar charts with error bars (300 DPI)
    • Box plots showing quartiles and outliers
    • Violin plots showing full distributions
    • Markdown comparison tables
    • Batch plot generation with create_all_plots()
  4. config.py (248 lines):

    • YAML configuration loading and saving
    • Data classes for fairness, statistics, visualization settings
    • Default configuration generator
    • Validation and error handling
  5. __init__.py (41 lines): Clean package exports for easy imports

Testing & Documentation:

  • test_benchmark_utils.py: 249 lines with 30+ test cases
  • GPU/CPU test markers for flexible testing
  • Complete API documentation with examples (README.md)
  • Example configuration file (benchmark_config.yaml)

Dependencies Added:

  • scipy >= 1.10 (for confidence intervals)
  • seaborn >= 0.12 (for enhanced visualizations)
  • pyyaml >= 6.0 (for configuration files)

Phase 2 Implementation: Statistical Mode Integration

Integrated statistical mode into all three benchmarks (641 lines modified):

Enhanced Benchmarks:

  1. benchmark_e2e.py - E2E latency benchmark with statistical mode:

    • Added --statistical flag for opt-in statistical analysis
    • Added --warmup N flag (default: 3 iterations)
    • Added --repeat N flag (default: 10 measurements)
    • Created run_framework_statistical() wrapper for statistical execution
    • CUDA event-based precise GPU timing in statistical mode
    • Comprehensive statistics output with formatted console display
    • Graceful fallback if benchmark_utils unavailable
    • Fully backward compatible with existing standard mode
  2. benchmark_throughput.py - Throughput benchmark with statistical mode:

    • Added --statistical flag for opt-in statistical analysis
    • Added --warmup N flag (default: 2 iterations for throughput)
    • Added --repeat N flag (default: 10 measurements)
    • Created run_framework_statistical_throughput() wrapper
    • Dual statistics: separate metrics for duration AND throughput
    • CUDA event-based precise GPU timing
    • Fully backward compatible
  3. benchmark_numpy_io.py - NumPy I/O benchmark with statistical mode (NEW):

    • Added --statistical flag for opt-in statistical analysis
    • Added --warmup N flag (default: 3 iterations)
    • Added --repeat N flag (default: 10 measurements)
    • Created run_framework_statistical() wrapper for statistical execution
    • Dual statistics: separate metrics for duration AND throughput (samples/sec)
    • CUDA event-based precise GPU timing
    • Compares Mahout's NumPy reader against PennyLane's implementation
    • Fully backward compatible
  4. Updated README.md:

    • Documented statistical mode usage with detailed examples
    • Separate sections for standard vs statistical modes
    • Explained new flags and their benefits
    • Usage examples for all three benchmarks

Statistical Mode Features:

  • Warmup runs to eliminate JIT compilation overhead
  • CUDA event-based timing for GPU-accurate measurements
  • Cache clearing between runs for fairness
  • Multiple measurement iterations (configurable)
  • Comprehensive statistics display: mean, median, std, P25-P99, IQR, CV
  • Pretty formatted console output via format_statistics()

Phase 3 Implementation: Visualization Integration

Added publication-ready plot generation to all three benchmarks (493 lines modified):

Enhanced Benchmarks with Visualization:

  1. benchmark_e2e.py - E2E benchmark with visualization:

    • Added --visualize flag to generate publication-ready plots
    • Added --output-dir PATH to customize output location (default: ./benchmark_results)
    • Generates 4 visualization files per run:
      • Bar chart with error bars (mean ± std)
      • Box plot showing quartiles and outliers
      • Violin plot showing full distribution
      • Markdown table with complete statistics
    • Filenames include parameters: e2e_q{qubits}_s{samples}_*.{png|md}
    • Graceful error handling if visualization fails
  2. benchmark_throughput.py - Throughput benchmark with visualization:

    • Added --visualize flag with same functionality
    • Added --output-dir PATH for custom output location
    • Generates 8 visualization files (2 complete sets):
      • Duration plots (time taken for benchmark)
      • Throughput plots (vectors processed per second)
    • Each set includes all 4 visualization types
    • Filenames: throughput_{duration|vecpersec}_q{qubits}_b{batches}_*.{png|md}
  3. benchmark_numpy_io.py - NumPy I/O benchmark with visualization (NEW):

    • Added --visualize flag to generate publication-ready plots
    • Added --output-dir PATH for custom output location
    • Generates 8 visualization files (2 complete sets):
      • Duration plots (I/O + encoding time)
      • Throughput plots (samples processed per second)
    • Each set includes all 4 visualization types
    • Filenames: numpy_{duration|throughput}_q{qubits}_s{samples}_*.{png|md}
  4. Updated README.md:

    • Added Phase 3 documentation for visualization mode
    • Usage examples with --visualize flag
    • Clear explanation of generated files for all three benchmarks
    • Distinction between standard, statistical, and visualization modes

Visualization Features:

  • 300 DPI publication-quality PNG images
  • Bar charts with mean ± std error bars
  • Box plots showing quartiles and outliers
  • Violin plots showing full distributions
  • Markdown tables with comprehensive statistics
  • Customizable output directory
  • Automatic directory creation
  • Descriptive filenames encoding parameters

Phase 4 Implementation: Documentation

Added comprehensive documentation for reproducible benchmarking (1,044 lines added):

New Documentation Files:

  1. BEST_PRACTICES.md (11,667 characters):

    • Comprehensive guide to reproducible benchmarks
    • Fairness principles (warmup, cache clearing, CUDA events, synchronization)
    • Statistical rigor (distributions, repetitions, outliers, confidence intervals)
    • Reproducibility guidelines (configuration, versioning, documentation)
    • Publication guidelines (plot selection, reporting standards, examples)
    • Common pitfalls with solutions (7 pitfalls documented)
    • Quick reference cheat sheets for CLI and Python API
    • References to PyTorch Helion, Triton, and GPU-mode best practices
  2. notebooks/statistical_benchmark_tutorial.ipynb (16,592 characters):

    • Interactive Jupyter notebook tutorial with 15+ executable code cells
    • Part 1: Using benchmark_utils API directly
    • Part 2: Running E2E benchmarks in statistical mode
    • Part 3: Generating publication-ready visualizations
    • Part 4: Best practices demonstrations with working code
    • Complete walkthrough from basics to advanced usage
    • Inline plot display
    • Ready for Google Colab deployment
  3. Enhanced README.md:

    • New "Documentation and Tutorials" section
    • "Visualization Examples" section with output structure
    • "Notebooks" section with Colab badges
    • "Contributing" guidelines for benchmark submissions
    • Comprehensive documentation for all three benchmarks
    • Links to all documentation resources

Documentation Topics:

  • Fairness: Warmup, cache clearing, CUDA events, synchronization
  • Statistics: Full distributions, repetitions, outlier filtering, confidence intervals
  • Reproducibility: Save configs, document specs, version control
  • Publication: Choose plots, report effect sizes, follow standards
  • Common pitfalls: No warmup, cached comparisons, CPU timing for GPU, cherry-picking, hiding variability, insufficient repetitions, undocumented configs

Example Usage

Phase 1 - Benchmark Utils:

from benchmark_utils import (
    benchmark_with_cuda_events,
    compute_statistics,
    BenchmarkVisualizer
)

# Define operation to benchmark
def my_operation():
    x = torch.randn(1000, 1000, device='cuda')
    return x @ x.T

# Run benchmark with CUDA events
timings = benchmark_with_cuda_events(
    my_operation,
    warmup_iters=3,
    repeat=50
)

# Compute statistics
stats = compute_statistics(timings)
print(f"Mean: {stats['mean']:.2f} ms ± {stats['std']:.2f} ms")

# Create visualizations
visualizer = BenchmarkVisualizer()
visualizer.plot_comparison_bars({
    'My Operation': stats
}, output_path='results.png')

Phase 2 - Statistical Mode:

# E2E benchmark with statistical mode (5 warmup, 20 measurements)
python benchmark_e2e.py --statistical --warmup 5 --repeat 20

# Throughput benchmark with statistical mode
python benchmark_throughput.py --statistical --frameworks mahout,pennylane

# NumPy I/O benchmark with statistical mode (NEW)
python benchmark_numpy_io.py --statistical --warmup 3 --repeat 15

# Works with all existing flags
python benchmark_e2e.py --statistical --qubits 16 --frameworks all

Phase 3 - Visualization Mode:

# E2E benchmark with visualization
python benchmark_e2e.py --statistical --visualize

# Customize output directory
python benchmark_e2e.py --statistical --visualize --output-dir ./my_results

# Throughput with visualization (generates 8 files)
python benchmark_throughput.py --statistical --visualize --frameworks mahout,pennylane

# NumPy I/O with visualization (generates 8 files) (NEW)
python benchmark_numpy_io.py --statistical --visualize \
  --qubits 10 --samples 1000 \
  --frameworks mahout,pennylane \
  --output-dir ./numpy_results

# Full example for publication
python benchmark_e2e.py --statistical --visualize \
  --warmup 5 --repeat 20 \
  --frameworks mahout-parquet pennylane \
  --output-dir ./paper_figures

Phase 4 - Documentation:

# Read best practices guide
cat BEST_PRACTICES.md

# Run tutorial notebook
jupyter notebook notebooks/statistical_benchmark_tutorial.ipynb

# Or open in Google Colab (badges in README)

Complete Feature Matrix

All THREE benchmarks now have complete feature parity:

Feature E2E Benchmark Throughput Benchmark NumPy I/O Benchmark
Standard mode
Statistical mode
Visualization mode
CUDA event timing
Warmup runs
Cache clearing
Full statistics
Publication plots
Dual metrics ✅ (duration + vectors/sec) ✅ (duration + samples/sec)

Documentation Updates

  • qdp/qdp-python/benchmark/README.md: Enhanced with documentation sections, visualization examples, tutorials, NumPy benchmark documentation, and contributing guidelines
  • qdp/qdp-python/benchmark/BEST_PRACTICES.md: NEW - Comprehensive reproducibility guide
  • qdp/qdp-python/benchmark/notebooks/statistical_benchmark_tutorial.ipynb: NEW - Interactive tutorial
  • qdp/DEVELOPMENT.md: Added RFC reference in benchmark section
  • qdp/qdp-python/benchmark/benchmark_utils/README.md: Complete API documentation

Testing

  • ✅ All Python modules compile successfully
  • ✅ 30+ unit tests with GPU/CPU markers
  • ✅ Code review completed (all feedback addressed)
  • ✅ Security scan passed (0 alerts)
  • ✅ Python 3.9+ compatible type hints
  • ✅ Backward compatible - standard mode unchanged

Summary

Phases 1, 2, 3, and 4 are complete (3,577 lines added). All three benchmarks now support:

  • Standard mode (single-run) - unchanged for backward compatibility
  • Statistical mode (multi-run with warmup) - fair, reproducible measurements
  • Visualization mode (publication plots) - 300 DPI publication-ready outputs
  • Complete documentation - best practices, tutorials, and examples

Benchmarks Enhanced:

  • benchmark_e2e.py - E2E latency measurements
  • benchmark_throughput.py - Throughput measurements
  • benchmark_numpy_io.py - NumPy I/O performance (Mahout vs other frameworks)

No existing functionality broken—fully backward compatible.

Original prompt

please help draft a benchmark roadmap(RFC) for Apache Mahout QDP(in qdp/), it should focus on 1. fairness (implement warmup, and others tbd) 2. create nice graph for blogposts or academic papers you should evaluate existing benchmarks, and think about it, there's a person's suggestions:要注意的應該就是 clear cache 和 event + synchronize 的設置,沒有 gradient 的問題就可以忽略下面實作中的那部分 可以用 torch.cuda 的 event 來記錄時間點,最好多跑幾次(記得 clear cache)算出很多個時間,然後算出統計值 (mean, std, err, percentiles, max, median, min 等),有那些統計值 matplotlib 就很好畫出來了 benchmark 架構大概都長得差不多 https://github.com/pytorch/helion/blob/main/helion/autotuner/benchmarking.py https://github.com/triton-lang/triton/blob/2c3afac48287af8ea5c270722124da9ec1cba2a1/python/triton/testing.py#L127 統計值 https://github.com/triton-lang/triton/blob/2c3afac48287af8ea5c270722124da9ec1cba2a1/python/triton/testing.py#L42 https://github.com/pytorch/helion/blob/main/helion/autotuner/base_search.py#L974 https://github.com/gpu-mode/reference-kernels/blob/main/problems/nvidia/eval_better_bench.py#L109


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI and others added 2 commits January 5, 2026 07:31
Co-authored-by: ryankert01 <91534261+ryankert01@users.noreply.github.com>
Co-authored-by: ryankert01 <91534261+ryankert01@users.noreply.github.com>
Copilot AI changed the title [WIP] Draft benchmark roadmap for Apache Mahout QDP Add Benchmark Roadmap RFC for QDP fairness and statistical rigor Jan 5, 2026
Copilot AI requested a review from ryankert01 January 5, 2026 07:35
@ryankert01
Copy link
Owner

@copilot help finish phase 1

…, visualization, and config modules

Co-authored-by: ryankert01 <91534261+ryankert01@users.noreply.github.com>
Copy link
Author

Copilot AI commented Jan 5, 2026

@copilot help finish phase 1

Phase 1 is complete! ✅

Implemented the complete foundation for fair benchmarking:

Created modules (1,337 lines):

  • timing.py: CUDA event timing, warmup, cache clearing
  • statistics.py: Full statistical analysis (mean, std, percentiles P25-P99, IQR, CV)
  • visualization.py: Publication-ready plots (bar, box, violin charts + tables)
  • config.py: YAML configuration management

Testing & docs:

  • 249 lines of unit tests (30+ test cases with GPU/CPU markers)
  • Complete API documentation with examples
  • Example configuration file

Dependencies added: scipy, seaborn, pyyaml

All code compiles successfully. Ready for Phase 2 integration! 🚀

Commit: ef3d488

Co-authored-by: ryankert01 <91534261+ryankert01@users.noreply.github.com>
Copilot AI changed the title Add Benchmark Roadmap RFC for QDP fairness and statistical rigor Add Benchmark Roadmap RFC and Phase 1 Implementation for QDP Jan 5, 2026
Copy link
Owner

@ryankert01 ryankert01 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot help do phase 2

Copilot AI and others added 2 commits January 5, 2026 08:54
…nd stats output

Co-authored-by: ryankert01 <91534261+ryankert01@users.noreply.github.com>
…fy duration measurement

Co-authored-by: ryankert01 <91534261+ryankert01@users.noreply.github.com>
Copy link
Author

Copilot AI commented Jan 5, 2026

@copilot help do phase 2

Phase 2 is complete! ✅

Integrated statistical mode into both benchmarks:

🔧 benchmark_e2e.py - E2E latency:

  • --statistical flag for opt-in analysis
  • --warmup N (default: 3) to eliminate JIT overhead
  • --repeat N (default: 10) for multiple measurements
  • CUDA event-based precise GPU timing
  • Full statistics output (mean, std, P25-P99, IQR, CV)

🔧 benchmark_throughput.py - Throughput:

  • Same statistical flags
  • Dual stats for duration AND throughput
  • Default warmup: 2 (optimized for throughput)

📊 Features delivered:

  • Warmup mechanism ✅
  • CUDA event timing ✅
  • Comprehensive statistics ✅
  • Console output with format_statistics()
  • Backward compatible (works without --statistical) ✅

Usage:

python benchmark_e2e.py --statistical --warmup 5 --repeat 20
python benchmark_throughput.py --statistical --frameworks mahout

All code review issues addressed. Security scan passed (0 alerts).

Commits: 1c5ae07, ffe82fd

Copilot AI changed the title Add Benchmark Roadmap RFC and Phase 1 Implementation for QDP Add Benchmark Roadmap RFC and Phase 1-2 Implementation for QDP Jan 5, 2026
Copilot AI requested a review from ryankert01 January 5, 2026 08:59
@ryankert01
Copy link
Owner

@copilot help do phase 3

@ryankert01
Copy link
Owner

@copilot also help do Phase 4: Documentation

Copilot AI and others added 2 commits January 5, 2026 09:18
…generation

Co-authored-by: ryankert01 <91534261+ryankert01@users.noreply.github.com>
Co-authored-by: ryankert01 <91534261+ryankert01@users.noreply.github.com>
Copy link
Author

Copilot AI commented Jan 5, 2026

@copilot help do phase 3

Phase 3 is complete! ✅

Added visualization capabilities to both benchmarks:

📊 benchmark_e2e.py - E2E visualization:

  • --visualize flag generates publication-ready plots
  • --output-dir PATH for custom location (default: ./benchmark_results)
  • Generates 4 files: bar chart, box plot, violin plot, markdown table
  • Filenames include parameters: e2e_q{qubits}_s{samples}_*.png

📊 benchmark_throughput.py - Throughput visualization:

  • Same --visualize and --output-dir flags
  • Generates 8 files (2 complete sets):
    • Duration plots (time taken)
    • Throughput plots (vectors/sec)
  • Each set has all 4 visualization types

🎨 Visualization features:

  • Bar charts with error bars (mean ± std) ✅
  • Box plots with quartiles and outliers ✅
  • Violin plots with full distributions ✅
  • Markdown tables with complete statistics ✅
  • 300 DPI publication quality ✅

Usage:

# E2E with visualization
python benchmark_e2e.py --statistical --visualize

# Throughput with custom output
python benchmark_throughput.py --statistical --visualize --output-dir ./results

# Full example for publication
python benchmark_e2e.py --statistical --visualize \
  --warmup 5 --repeat 20 \
  --frameworks mahout-parquet pennylane \
  --output-dir ./paper_figures

Code review feedback addressed. Security scan passed (0 alerts).

Commits: ac6693e, 67ada45

Copilot AI changed the title Add Benchmark Roadmap RFC and Phase 1-2 Implementation for QDP Add Benchmark Roadmap RFC and Phase 1-3 Implementation for QDP Jan 5, 2026
…, and best practices guide

Co-authored-by: ryankert01 <91534261+ryankert01@users.noreply.github.com>
@ryankert01 ryankert01 marked this pull request as ready for review January 5, 2026 09:30
Co-authored-by: ryankert01 <91534261+ryankert01@users.noreply.github.com>
Copy link
Author

Copilot AI commented Jan 5, 2026

@copilot also help do Phase 4: Documentation

Phase 4 Documentation is complete! ✅

Created comprehensive documentation:

📚 BEST_PRACTICES.md (11,667 chars):

  • Fairness principles (warmup, caches, CUDA timing)
  • Statistical rigor (distributions, repetitions, CIs)
  • Reproducibility (config, versioning, docs)
  • Publication guidelines
  • 7 common pitfalls with solutions
  • CLI and Python API cheat sheets

📓 statistical_benchmark_tutorial.ipynb (16,592 chars):

  • Interactive Jupyter notebook
  • 15+ executable code cells
  • Part 1: Using benchmark_utils API
  • Part 2: Running statistical benchmarks
  • Part 3: Creating visualizations
  • Part 4: Best practices demos
  • Ready for Colab deployment

📖 Enhanced README.md:

  • Documentation & Tutorials section
  • Visualization examples with file structure
  • Notebooks section with Colab badges
  • Contributing guidelines
  • Links to all resources

Key Topics Covered:

Fairness: Warmup, cache clearing, CUDA events, synchronization

Statistics: Full distributions, repetitions, outlier filtering, confidence intervals

Reproducibility: Save configs, document specs, version control, share settings

Publication: Choose plots, report effect sizes, follow standards

Usage:

# Follow best practices guide
cat BEST_PRACTICES.md

# Run tutorial notebook
jupyter notebook notebooks/statistical_benchmark_tutorial.ipynb

# Or open in Colab (badges in README)

All documentation includes working code examples. Code review passed.

Commits: 63b9311, 644c3f2

Copilot AI changed the title Add Benchmark Roadmap RFC and Phase 1-3 Implementation for QDP Add Benchmark Roadmap RFC and Phase 1-4 Implementation for QDP Jan 5, 2026
@ryankert01
Copy link
Owner

@copilot we should also supports numpy, which is numpy of mahout vs. other frameworks's numpy impl.

Copilot AI and others added 2 commits January 5, 2026 10:08
Co-authored-by: ryankert01 <91534261+ryankert01@users.noreply.github.com>
Co-authored-by: ryankert01 <91534261+ryankert01@users.noreply.github.com>
Copy link
Author

Copilot AI commented Jan 5, 2026

@copilot we should also supports numpy, which is numpy of mahout vs. other frameworks's numpy impl.

NumPy benchmark support added! ✅

Enhanced benchmark_numpy_io.py with full statistical & visualization capabilities:

📊 Statistical Mode:

  • --statistical flag for multi-run analysis
  • --warmup N (default: 3) to eliminate JIT overhead
  • --repeat N (default: 10) for measurements
  • Warmup phase + cache clearing
  • Full statistics (mean, std, P25-P99, IQR, CV)
  • Dual metrics: duration AND throughput

📊 Visualization Mode:

  • --visualize flag generates publication plots
  • --output-dir PATH for custom location
  • Generates 8 files (2 complete sets):
    • Duration plots (I/O + encoding time)
    • Throughput plots (samples/sec)
  • Each set: bar, box, violin, table

Feature Parity: All 3 benchmarks (E2E, Throughput, NumPy) now have identical capabilities

Usage:

# Statistical mode
python benchmark_numpy_io.py --statistical \
  --frameworks mahout,pennylane

# With visualization
python benchmark_numpy_io.py --statistical --visualize \
  --qubits 10 --samples 1000 \
  --output-dir ./numpy_results

Documentation: Complete NumPy benchmark section added to README with examples.

Code review feedback addressed. Security scan passed (0 alerts).

Commits: 34edcb8, 09a8e24

Copilot AI changed the title Add Benchmark Roadmap RFC and Phase 1-4 Implementation for QDP Add Benchmark Roadmap RFC and Complete Phase 1-4 Implementation for All QDP Benchmarks Jan 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants