oneapi-agent-toolkit

CUDA in, agent’s SYCL port out, verified on NVIDIA and AMD GPUs

The first end-to-end run of both halves of the toolkit, with no human edits in between:

  1. oneapi-agent loop (claude-sonnet-5-5, and claude-haiku-5-5 for the comparison below) ported five HeCBench CUDA programs it had never seen: stencil1d, matrix_rotate, atomic_reduction, scan and adam.
  2. remote-test took the agent’s final sources unchanged, rented a GPU and checked them against the C++ reference and against the original CUDA built natively on the same GPU (nvcc, or hipify-perl + hipcc). Every machine was deleted and the deletion confirmed.

The hand-written ports in examples/*/sycl/ were not used anywhere here. The agent’s file tools are confined to its own work directory, so it could not read them.

The agent’s ports on GPUs

One port per program: the toolkit arm’s run 1. Max abs error, SYCL vs …

Program NVIDIA GPU … C++ reference … original CUDA (nvcc) AMD MI350X: … C++ reference … original CUDA (hipified)
stencil1d L4 0 0 0 0
matrix_rotate RTX A4500 0 0 0 0
atomic_reduction RTX 2000 Ada 0 0 0 0
scan L4 0 0 0 0
adam RTX 4000 Ada 2.38e-7 5.96e-8 2.38e-7 5.96e-8

All 10 runs PASS (the tolerances are the tasks’ own: exact for the four integer programs, atol 1e-5 + rtol 1e-4 for adam). The NVIDIA GPU differs per program because remote-test takes the cheapest card in stock at that moment. All runs were on Runpod (2026-10-16): about 1-2 min per run; GPU spend for this page about $1.50 on AMD (including the failed attempts below) and a few cents on NVIDIA.

The agent runs: with and without the toolkit

Two models, the same five tasks, 3 runs per cell, every final port graded by a hidden compile + verify + helper scan the model never sees (scripts/ablation.py, as in docs/ablation/round2). Correct and 0 dpct helpers:

Model toolkit baseline (no verify/scan tools) baseline + shell
claude-sonnet-5-5 15/15 6/15 6/15
claude-haiku-5-5 15/15 12/15 11/15
both 30/30 18/30 17/30

Per-program table: SUMMARY.md; traces, reports and final sources of all 90 runs: runs/.

What went wrong on the way (nothing here was edited out of the results)