Benchmarks
DataFusion Nexus benchmark evidence is reported from release builds, with CPU and
GPU rows compared from the same harness. The fixture data is generated through
fixture/fixture.sh.
Graph Algorithms
TPC-H SF100
- Environment: AWS EC2 g7e.4xlarge, 16 vCPUs, 128 GiB system memory, local NVMe fixture storage, RTX PRO 6000.
- Run: SF100,1 warmup / 1 measured iteration, source cache
disabled, LocalKvikio parquet reads. - Result: CPU 77.4s, GPU 26.2s, CPU / GPU 3.0x, peak reservation 54.6 GiB.
- KvikIO: local cuDF/libcudf file reads with cache disabled; this run forced KvikIO compatibility I/O with
KVIKIO_COMPAT_MODE=ON. On this g7e.4xlarge host,OFFenters the cuFile path, but cuFile compatibility mode can still fall back; it does not prove native GDS.
- Per-query runtime
- Speedup
- Memory pressure
- Per-query results
Wall time, measured iteration mean.
CPU wall time divided by GPU wall time.
Query-level reservation ledger high-water marks used by bounded admission.
- Reservation peak is the whole-query live reserved byte peak, not an operator-class diagnostic.
nvidia-smican be higher or lower because it samples process/GPU memory externally and includes CUDA/libcudf allocator state outside the query reservation ledger.
22 TPC-H queries.
| Query | CPU | GPU | Speedup | Peak class | Peak bytes | Row groups |
|---|---|---|---|---|---|---|
| Q01 | 4.1s | 2.3s | 1.8x | filter_projection | 9.2 GiB | 5,068 |
| Q02 | 882ms | 430ms | 2.1x | join | 2.4 GiB | 1,654 |
| Q03 | 2.1s | 697ms | 3.0x | join | 24.4 GiB | 3,947 |
| Q04 | 1.2s | 595ms | 1.9x | join | 14.6 GiB | 5,210 |
| Q05 | 3.8s | 1.3s | 3.0x | join | 54.2 GiB | 5,740 |
| Q06 | 648ms | 114ms | 5.7x | filter_projection | 4.5 GiB | 780 |
| Q07 | 3.5s | 2.3s | 1.5x | join | 11.7 GiB | 3,676 |
| Q08 | 3.7s | 1.7s | 2.2x | join | 13.0 GiB | 6,043 |
| Q09 | 7.1s | 2.2s | 3.1x | join | 18.3 GiB | 8,561 |
| Q10 | 2.9s | 778ms | 3.7x | join | 11.1 GiB | 2,935 |
| Q11 | 661ms | 169ms | 3.9x | join | 5.4 GiB | 1,467 |
| Q12 | 1.5s | 536ms | 2.9x | join | 5.8 GiB | 2,611 |
| Q13 | 3.0s | 508ms | 5.9x | aggregate | 11.0 GiB | 2,093 |
| Q14 | 459ms | 158ms | 2.9x | join | 1.8 GiB | 232 |
| Q15 | 2.0s | 116ms | 17.1x | aggregate | 1.9 GiB | 214 |
| Q16 | 2.9s | 347ms | 8.3x | join | 2.6 GiB | 1,632 |
| Q17 | 6.8s | 1.7s | 4.1x | join | 18.0 GiB | 10,289 |
| Q18 | 18.8s | 5.8s | 3.2x | join | 21.7 GiB | 7,234 |
| Q19 | 2.3s | 876ms | 2.6x | join | 4.6 GiB | 5,163 |
| Q20 | 2.1s | 493ms | 4.4x | aggregate | 6.2 GiB | 2,413 |
| Q21 | 6.4s | 2.9s | 2.2x | filter_projection | 27.4 GiB | 6,099 |
| Q22 | 492ms | 208ms | 2.4x | join | 2.3 GiB | 2,093 |
TPC-DS SF100
- Environment: AWS EC2 g7e.4xlarge, 16 vCPUs, 128 GiB system memory, local NVMe fixture storage, RTX PRO 6000.
- Run: SF100 full suite (99 queries), 1 warmup / 1 measured iteration, profile
sf100_gpu_throughput, LocalKvikio parquet reads. - Result: CPU 379.4s, GPU 101.7s across 99/99 successful native queries, CPU / GPU 3.7x, peak reservation 43.0 GiB. Row counts matched on 99/99 queries.
- KvikIO: local cuDF/libcudf file reads with
KVIKIO_COMPAT_MODE=ON. On this g7e.4xlarge host,OFFstill may enter cuFile compatibility mode without native GDS.
- Per-query runtime
- Speedup
- Memory pressure
- Per-query results
Wall time for the measured iteration. GPU bars use successful native time; failed attempts would still show wall time in gray. Y-axis skips 20–120s so short queries keep readable CPU vs GPU heights; Q72 and other long outliers still render above the break.
Scroll horizontally to inspect all 99 queries.
CPU wall / successful GPU wall, sorted ascending. Green is GPU faster; red is GPU slower.
Query-level native reservation ledger high-water marks.
99 TPC-DS queries. GPU faster on 86; slower on 13.
| Query | CPU | GPU | Speedup | GPU outcome | Rows | Runtime class | Reservation peak |
|---|---|---|---|---|---|---|---|
| Q01 | 333ms | 110ms | 3.0x | succeeded | match | aggregate | 0.6 GiB |
| Q02 | 2.1s | 1.6s | 1.4x | succeeded | match | aggregate | 9.9 GiB |
| Q03 | 930ms | 272ms | 3.4x | succeeded | match | join | 3.1 GiB |
| Q04 | 13.8s | 4.9s | 2.8x | succeeded | match | aggregate | 20.5 GiB |
| Q05 | 689ms | 620ms | 1.1x | succeeded | match | join | 3.3 GiB |
| Q06 | 292ms | 334ms | 0.9x | succeeded | match | join | 0.8 GiB |
| Q07 | 2.2s | 689ms | 3.3x | succeeded | match | join | 11.3 GiB |
| Q08 | 1.2s | 366ms | 3.2x | succeeded | match | join | 1.3 GiB |
| Q09 | 8.2s | 1.4s | 5.8x | succeeded | match | aggregate | 3.3 GiB |
| Q10 | 790ms | 457ms | 1.7x | succeeded | match | join | 0.7 GiB |
| Q11 | 8.0s | 3.8s | 2.1x | succeeded | match | aggregate | 20.3 GiB |
| Q12 | 115ms | 130ms | 0.9x | succeeded | match | join | 0.1 GiB |
| Q13 | 2.2s | 1.1s | 2.1x | succeeded | match | join | 9.3 GiB |
| Q14 | 8.7s | 6.1s | 1.4x | succeeded | match | join | 22.1 GiB |
| Q15 | 295ms | 213ms | 1.4x | succeeded | match | join | 0.4 GiB |
| Q16 | 1.4s | 813ms | 1.7x | succeeded | match | join | 4.6 GiB |
| Q17 | 1.2s | 553ms | 2.2x | succeeded | match | join | 2.6 GiB |
| Q18 | 1.6s | 866ms | 1.9x | succeeded | match | join | 5.9 GiB |
| Q19 | 654ms | 313ms | 2.1x | succeeded | match | join | 2.1 GiB |
| Q20 | 318ms | 244ms | 1.3x | succeeded | match | join | 0.1 GiB |
| Q21 | 373ms | 115ms | 3.2x | succeeded | match | join | 1.2 GiB |
| Q22 | 2.1s | 378ms | 5.6x | succeeded | match | join | 3.7 GiB |
| Q23 | 17.7s | 6.0s | 3.0x | succeeded | match | join | 43.0 GiB |
| Q24 | 6.3s | 2.4s | 2.6x | succeeded | match | join | 11.1 GiB |
| Q25 | 1.2s | 475ms | 2.5x | succeeded | match | join | 2.4 GiB |
| Q26 | 1.2s | 494ms | 2.4x | succeeded | match | join | 5.0 GiB |
| Q27 | 2.8s | 1.7s | 1.7x | succeeded | match | join | 11.3 GiB |
| Q28 | 11.5s | 5.1s | 2.3x | succeeded | match | aggregate | 9.3 GiB |
| Q29 | 1.6s | 640ms | 2.5x | succeeded | match | join | 5.3 GiB |
| Q30 | 305ms | 139ms | 2.2x | succeeded | match | join | 0.3 GiB |
| Q31 | 2.6s | 798ms | 3.2x | succeeded | match | join | 2.8 GiB |
| Q32 | 586ms | 302ms | 1.9x | succeeded | match | join | 0.3 GiB |
| Q33 | 476ms | 560ms | 0.8x | succeeded | match | join | 1.2 GiB |
| Q34 | 866ms | 360ms | 2.4x | succeeded | match | join | 4.1 GiB |
| Q35 | 1.2s | 647ms | 1.9x | succeeded | match | join | 1.3 GiB |
| Q36 | 2.5s | 422ms | 6.0x | succeeded | match | join | 7.2 GiB |
| Q37 | 470ms | 1.3s | 0.4x | succeeded | match | aggregate | 3.2 GiB |
| Q38 | 1.9s | 1.1s | 1.7x | succeeded | match | join | 2.2 GiB |
| Q39 | 383ms | 161ms | 2.4x | succeeded | match | join | 0.8 GiB |
| Q40 | 406ms | 355ms | 1.1x | succeeded | match | join | 0.8 GiB |
| Q41 | 11ms | 43ms | 0.2x | succeeded | match | aggregate | 0.0 GiB |
| Q42 | 485ms | 200ms | 2.4x | succeeded | match | join | 1.3 GiB |
| Q43 | 1.4s | 340ms | 4.2x | succeeded | match | join | 4.1 GiB |
| Q44 | 3.1s | 1.5s | 2.1x | succeeded | match | aggregate | 2.7 GiB |
| Q45 | 149ms | 163ms | 0.9x | succeeded | match | join | 0.4 GiB |
| Q46 | 1.9s | 580ms | 3.3x | succeeded | match | join | 6.7 GiB |
| Q47 | 6.8s | 870ms | 7.8x | succeeded | match | join | 7.1 GiB |
| Q48 | 1.8s | 882ms | 2.0x | succeeded | match | join | 9.3 GiB |
| Q49 | 1.1s | 852ms | 1.3x | succeeded | match | join | 3.8 GiB |
| Q50 | 1.8s | 803ms | 2.2x | succeeded | match | join | 13.4 GiB |
| Q51 | 7.4s | 970ms | 7.7x | succeeded | match | join | 4.4 GiB |
| Q52 | 479ms | 244ms | 2.0x | succeeded | match | join | 1.3 GiB |
| Q53 | 790ms | 585ms | 1.4x | succeeded | match | join | 5.2 GiB |
| Q54 | 715ms | 1.0s | 0.7x | succeeded | match | join | 10.6 GiB |
| Q55 | 497ms | 217ms | 2.3x | succeeded | match | join | 1.3 GiB |
| Q56 | 435ms | 605ms | 0.7x | succeeded | match | join | 1.2 GiB |
| Q57 | 3.1s | 598ms | 5.2x | succeeded | match | join | 3.7 GiB |
| Q58 | 3.4s | 493ms | 6.9x | succeeded | match | join | 0.9 GiB |
| Q59 | 3.7s | 1.9s | 1.9x | succeeded | match | aggregate | 16.5 GiB |
| Q60 | 645ms | 680ms | 0.9x | succeeded | match | join | 1.5 GiB |
| Q61 | 917ms | 725ms | 1.3x | succeeded | match | join | 2.3 GiB |
| Q62 | 606ms | 443ms | 1.4x | succeeded | match | aggregate | 1.7 GiB |
| Q63 | 775ms | 456ms | 1.7x | succeeded | match | join | 5.2 GiB |
| Q64 | 11.2s | 3.1s | 3.6x | succeeded | match | join | 10.8 GiB |
| Q65 | 3.3s | 671ms | 4.9x | succeeded | match | join | 6.7 GiB |
| Q66 | 1.9s | 730ms | 2.7x | succeeded | match | join | 4.0 GiB |
| Q67 | 15.5s | 2.3s | 6.6x | succeeded | match | aggregate | 15.2 GiB |
| Q68 | 504ms | 393ms | 1.3x | succeeded | match | join | 4.6 GiB |
| Q69 | 772ms | 417ms | 1.9x | succeeded | match | join | 0.6 GiB |
| Q70 | 4.0s | 1.4s | 2.9x | succeeded | match | join | 4.1 GiB |
| Q71 | 690ms | 551ms | 1.3x | succeeded | match | join | 1.6 GiB |
| Q72 | 140.5s | 6.7s | 20.9x | succeeded | match | join | 24.5 GiB |
| Q73 | 359ms | 276ms | 1.3x | succeeded | match | join | 1.9 GiB |
| Q74 | 4.1s | 2.6s | 1.6x | succeeded | match | aggregate | 13.2 GiB |
| Q75 | 4.8s | 1.4s | 3.4x | succeeded | match | join | 7.7 GiB |
| Q76 | 1.8s | 1.7s | 1.1x | succeeded | match | join | 11.9 GiB |
| Q77 | 682ms | 546ms | 1.3x | succeeded | match | join | 1.7 GiB |
| Q78 | 6.8s | 1.5s | 4.7x | succeeded | match | aggregate | 10.8 GiB |
| Q79 | 1.9s | 658ms | 2.9x | succeeded | match | join | 6.5 GiB |
| Q80 | 1.4s | 1.0s | 1.4x | succeeded | match | join | 3.9 GiB |
| Q81 | 353ms | 179ms | 2.0x | succeeded | match | join | 0.5 GiB |
| Q82 | 660ms | 2.9s | 0.2x | succeeded | match | aggregate | 6.5 GiB |
| Q83 | 283ms | 96ms | 3.0x | succeeded | match | join | 0.1 GiB |
| Q84 | 136ms | 155ms | 0.9x | succeeded | match | source | 0.7 GiB |
| Q85 | 564ms | 336ms | 1.7x | succeeded | match | join | 2.1 GiB |
| Q86 | 281ms | 198ms | 1.4x | succeeded | match | join | 1.0 GiB |
| Q87 | 2.1s | 1.1s | 1.8x | succeeded | match | join | 2.2 GiB |
| Q88 | 6.4s | 839ms | 7.7x | succeeded | match | join | 13.1 GiB |
| Q89 | 1.0s | 559ms | 1.8x | succeeded | match | join | 5.1 GiB |
| Q90 | 325ms | 273ms | 1.2x | succeeded | match | join | 3.3 GiB |
| Q91 | 85ms | 142ms | 0.6x | succeeded | match | join | 0.1 GiB |
| Q92 | 207ms | 141ms | 1.5x | succeeded | match | join | 0.1 GiB |
| Q93 | 3.1s | 895ms | 3.5x | succeeded | match | join | 10.2 GiB |
| Q94 | 505ms | 368ms | 1.4x | succeeded | match | join | 2.3 GiB |
| Q95 | 4.8s | 943ms | 5.1x | succeeded | match | join | 21.2 GiB |
| Q96 | 855ms | 941ms | 0.9x | succeeded | match | join | 13.1 GiB |
| Q97 | 1.9s | 918ms | 2.0x | succeeded | match | join | 3.4 GiB |
| Q98 | 373ms | 310ms | 1.2x | succeeded | match | join | 1.0 GiB |
| Q99 | 1.5s | 1.0s | 1.4x | succeeded | match | aggregate | 3.1 GiB |
Full interactive Plotly report: tpcds_sf100_cpu_gpu.html.