Skip to content

GPU: remove FSST metadata upload callbacks - #9430

Draft
joseph-isaacs wants to merge 1 commit into
joe/gpu-fsst-device-outputfrom
joe/gpu-fsst-no-metadata-callbacks
Draft

GPU: remove FSST metadata upload callbacks#9430
joseph-isaacs wants to merge 1 commit into
joe/gpu-fsst-device-outputfrom
joe/gpu-fsst-no-metadata-callbacks

Conversation

@joseph-isaacs

@joseph-isaacs joseph-isaacs commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Stacked only on #9426. This draft contains one reviewable GPU correctness or performance concern.

What

  • Submit FSST metadata copies directly on the execution stream.
  • Remove host callbacks used only to stage those small uploads.

Why this is needed

The performance goal is real: the generic async upload future installs a host callback and waits for all preceding stream work just to keep tiny upload sources alive. The FSST symbol and length tables are ordinary pageable vectors, so they do not need that callback-heavy lifetime path.

However, this draft is not merge-ready as written. It also changes the validity-buffer upload to ensure_on_device_sync. Vortex's “sync” helper currently calls cudarc's stream memcpy_htod, which uses cuMemcpyHtoDAsync; cudarc documents that the source must not move until completion. A validity source may be pinned, so dropping it immediately can be unsafe. Keep validity on the awaited lifetime-safe path, or use a truly synchronous driver copy, and restrict the callback removal to proven-pageable metadata.

Validation

Checked independently against this PR's current base:

  • cargo check -p vortex-cuda --all-features

The combined implementation also passed Rust/CUDA formatting, 164 focused dynamic-dispatch tests, and 28 focused constant-array tests.

@joseph-isaacs
joseph-isaacs force-pushed the joe/gpu-nullable-runend branch from dcf6e61 to f9fa31f Compare August 17, 2026 09:12
@joseph-isaacs
joseph-isaacs force-pushed the joe/gpu-fsst-no-metadata-callbacks branch from a441e7b to 6158005 Compare August 17, 2026 09:12
@codspeed-hq

codspeed-hq Bot commented Aug 17, 2026

Copy link
Copy Markdown

Merging this PR will improve performance by 10.18%

⚠️ Unknown Walltime execution environment detected

Using the Walltime instrument on standard Hosted Runners will lead to inconsistent data.

For the most accurate results, we recommend using CodSpeed Macro Runners: bare-metal machines fine-tuned for performance measurement consistency.

⚡ 1 improved benchmark
✅ 2042 untouched benchmarks
⏩ 46 skipped benchmarks1

Performance Changes

Mode Benchmark BASE HEAD Efficiency
Simulation take[core/shuffled/primitive/nonnull/chunks=1024/indices=10000] 14.2 ms 12.9 ms +10.18%

Tip

Curious why this is faster? Comment @codspeedbot explain why this is faster on this PR, or directly use the CodSpeed MCP with your agent.


Comparing joe/gpu-fsst-no-metadata-callbacks (6cb8843) with joe/gpu-fsst-device-output (b215956)

Open in CodSpeed

Footnotes

  1. 46 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@joseph-isaacs
joseph-isaacs changed the base branch from joe/gpu-nullable-runend to joe/gpu-fsst-device-output August 17, 2026 09:19
@joseph-isaacs
joseph-isaacs force-pushed the joe/gpu-fsst-device-output branch from a74f5d4 to f099b79 Compare August 17, 2026 12:35
@joseph-isaacs
joseph-isaacs force-pushed the joe/gpu-fsst-no-metadata-callbacks branch from 6158005 to 473cce7 Compare August 17, 2026 12:39
@joseph-isaacs
joseph-isaacs force-pushed the joe/gpu-fsst-device-output branch from f099b79 to b215956 Compare August 17, 2026 18:20
Signed-off-by: Joe Isaacs <2413449+joseph-isaacs@users.noreply.github.com>
@joseph-isaacs
joseph-isaacs force-pushed the joe/gpu-fsst-no-metadata-callbacks branch from 473cce7 to 6cb8843 Compare August 17, 2026 18:24
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.

1 participant