Generated by examples/run_pipeline.py on 2026-10-15T07:34:29+00:00.
- Platform:
Linux-6.18.44-fc-v114-x86_64-with-glibc2.39
- icpx:
Intel(R) oneAPI DPC++/C++ Compiler 2026.1.1 (2026.1.1.20260724)
- c2s:
dpct version 21.0.0. Codebase:(74ff57bb10d655c9fab872bdcfb02ba96eeaa477). clang version 21.0.0
- SYCL devices:
opencl:0 Intel(R) Xeon(R) Processor @ 2.80GHz
Each row is one tool call; the status and summary come straight from the ToolResult. Full evidence: examples/results/<name>.json.
The idiomatic ports in <name>/sycl/ were hand-written (they are the target end state, not output of the agent loop).
fir
| step |
status |
summary |
| reference_build |
rc=0 |
g++ -O2 -std=c++17 -Iexamples/fir/../common -Iexamples/fir examples/fir/fir_ref.cpp -o build/reference |
| migrate |
ok |
migrated 1 CUDA file(s) -> 2 file(s); 4 DPCT warning(s) (DPCT1009x1, DPCT1010x1, DPCT1101x1, DPCT1113x1) |
| compile_migrated |
ok |
compiled 1 source(s) -> examples/results/work/fir/build/migrated (0 warning(s)) |
| verify_migrated |
ok |
PASS: 2/2 case(s) match (worst residual peak -135.0 dBFS, threshold -96.0 dBFS) |
| scan_migrated |
fail |
14 dpct helper use(s) remain in 1 file(s) (macro=7, memory_management=3, device_queue_management=2, include=1) |
| compile_idiomatic |
ok |
compiled 1 source(s) -> examples/results/work/fir/build/idiomatic (0 warning(s)) |
| verify_idiomatic |
ok |
PASS: 2/2 case(s) match (worst residual peak -135.0 dBFS, threshold -96.0 dBFS) |
| benchmark_idiomatic |
ok |
5 run(s) each; Intel(R) Xeon(R) Processor @ 2.80GHz: median 226.17 ms, p95 259.53 ms |
| benchmark_reference |
ok |
5 run(s) each; none: median 13.02 ms, p95 14.67 ms |
| scan_idiomatic |
ok |
no dpct helpers in 1 file(s) |
fuzz
| step |
status |
summary |
| reference_build |
rc=0 |
g++ -O2 -std=c++17 -Iexamples/fuzz/../common examples/fuzz/fuzz_ref.cpp -o build/reference |
| migrate |
ok |
migrated 1 CUDA file(s) -> 1 file(s); 4 DPCT warning(s) (DPCT1009x1, DPCT1010x1, DPCT1024x2) |
| compile_migrated |
ok |
compiled 1 source(s) -> examples/results/work/fuzz/build/migrated (0 warning(s)) |
| verify_migrated |
ok |
PASS: 2/2 case(s) match (worst residual peak -138.5 dBFS, threshold -96.0 dBFS) |
| scan_migrated |
fail |
22 dpct helper use(s) remain in 1 file(s) (macro=13, events_timing=3, device_queue_management=2, memory_management=2) |
| compile_idiomatic |
ok |
compiled 1 source(s) -> examples/results/work/fuzz/build/idiomatic (0 warning(s)) |
| verify_idiomatic |
ok |
PASS: 2/2 case(s) match (worst residual peak -138.5 dBFS, threshold -96.0 dBFS) |
| benchmark_idiomatic |
ok |
5 run(s) each; Intel(R) Xeon(R) Processor @ 2.80GHz: median 205.72 ms, p95 216.31 ms |
| benchmark_reference |
ok |
5 run(s) each; none: median 6.41 ms, p95 8.37 ms |
| scan_idiomatic |
ok |
no dpct helpers in 1 file(s) |
gemm_cublas
Generated by examples/run_pipeline.py gemm_cublas on 2026-10-15T14:09:24+00:00 (same platform, icpx, c2s and device as above).
It also uses oneMKL SYCL 2026.1.0 from conda-forge at $ONEMKL_PREFIX, which links the raw c2s output.
It also uses oneMath built from source at commit 1308c5e (BLAS domain, MKL CPU backend, sequential) at $ONEMATH_PREFIX, which links the idiomatic port.
| step |
status |
summary |
| reference_build |
rc=0 |
g++ -O2 -std=c++17 examples/gemm_cublas/gemm_ref.cpp -o build/reference |
| migrate |
ok |
migrated 1 CUDA file(s) -> 1 file(s); 3 DPCT warning(s) (DPCT1009x1, DPCT1024x2) |
| compile_migrated |
ok |
compiled 1 source(s) -> examples/results/work/gemm_cublas/build/migrated (418 warning(s)) |
| verify_migrated |
ok |
PASS: 1/1 case(s) match (worst max abs err 5.72e-06, atol 0.002) |
| scan_migrated |
fail |
37 dpct helper use(s) remain in 1 file(s) (macro=22, events_timing=5, memory_management=3, include=2) |
| compile_idiomatic |
ok |
compiled 1 source(s) -> examples/results/work/gemm_cublas/build/idiomatic (0 warning(s)) |
| verify_idiomatic |
ok |
PASS: 1/1 case(s) match (worst max abs err 5.72e-06, atol 0.002) |
| benchmark_idiomatic |
ok |
5 run(s) each; Intel(R) Xeon(R) Processor @ 2.80GHz: median 144.29 ms, p95 154.78 ms |
| benchmark_reference |
ok |
5 run(s) each; none: median 46.89 ms, p95 59.99 ms |
| scan_idiomatic |
ok |
no dpct helpers in 1 file(s) |
What the gemm_cublas run shows:
- What c2s emits: c2s maps
cublasSgemm to the oneMKL product API, oneapi::mkl::blas::column_major::gemm(handle->get_queue(), ...), and maps cublasHandle_t to a dpct::blas::descriptor (from <dpct/blas_utils.hpp>). It does not emit oneapi::math.
- scan_migrated: it puts the descriptor under
library_wrappers (2 uses; the full set of categories is in the JSON). It also reports the 3 oneapi::mkl:: lines as the new onemkl_product_api advisory.
- The 418 compile warnings are SYCL-header deprecation warnings pulled in through the oneMKL and dpct headers. None of them is in the migrated code.
- Same result from both builds: the raw migration (oneMKL) and the idiomatic port (oneMath, with the MKL CPU backend selected at run time from the queue’s device) give bit-identical output. Max abs err is 5.72e-06 and RMS is 5.8e-07, against a provable worst-case bound of 1.47e-3. The tolerance is justified in
gemm_cublas/task.json.
- kernel_ms is not comparable between the two builds.
- The idiomatic port times the first
gemm with std::chrono. That time includes oneMath loading its backend library on first use.
- The migrated code times between two
dpct::sync_barrier events.
saxpy
| step |
status |
summary |
| reference_build |
rc=0 |
g++ -O2 -std=c++17 examples/saxpy/saxpy_ref.cpp -o build/reference |
| migrate |
ok |
migrated 1 CUDA file(s) -> 1 file(s); 1 DPCT warning(s) (DPCT1009x1) |
| compile_migrated |
ok |
compiled 1 source(s) -> examples/results/work/saxpy/build/migrated (0 warning(s)) |
| verify_migrated |
ok |
PASS: 1/1 case(s) match (worst max abs err 4.77e-07, atol 1e-06) |
| scan_migrated |
fail |
11 dpct helper use(s) remain in 1 file(s) (events_timing=3, macro=2, device_queue_management=2, memory_management=2) |
| compile_idiomatic |
ok |
compiled 1 source(s) -> examples/results/work/saxpy/build/idiomatic (0 warning(s)) |
| verify_idiomatic |
ok |
PASS: 1/1 case(s) match (worst max abs err 4.77e-07, atol 1e-06) |
| benchmark_idiomatic |
ok |
5 run(s) each; Intel(R) Xeon(R) Processor @ 2.80GHz: median 216.84 ms, p95 231.32 ms |
| benchmark_reference |
ok |
5 run(s) each; none: median 14.35 ms, p95 19.48 ms |
| scan_idiomatic |
ok |
no dpct helpers in 1 file(s) |
softmax_hecbench
| step |
status |
summary |
| reference_build |
rc=0 |
g++ -O2 -std=c++17 -Iexamples/softmax_hecbench examples/softmax_hecbench/softmax_ref.cpp -o build/reference |
| migrate |
ok |
migrated 1 CUDA file(s) -> 2 file(s); 0 DPCT warning(s) |
| compile_migrated |
ok |
compiled 1 source(s) -> examples/results/work/softmax_hecbench/build/migrated (0 warning(s)) |
| verify_migrated |
fail |
FAIL: 0/1 case(s) match; first failure: 22156 of 524288 element(s) outside tolerance |
| scan_migrated |
fail |
9 dpct helper use(s) remain in 1 file(s) (types_launch=4, device_queue_management=2, memory_management=2, include=1) |
| compile_idiomatic |
ok |
compiled 1 source(s) -> examples/results/work/softmax_hecbench/build/idiomatic (0 warning(s)) |
| verify_idiomatic |
ok |
PASS: 1/1 case(s) match (worst max abs err 9.69e-08, atol 1e-06) |
| benchmark_idiomatic |
ok |
5 run(s) each; Intel(R) Xeon(R) Processor @ 2.80GHz: median 273.35 ms, p95 303.86 ms |
| benchmark_reference |
ok |
5 run(s) each; none: median 11.17 ms, p95 11.49 ms |
| scan_idiomatic |
ok |
no dpct helpers in 1 file(s) |