Skip to content

perf(browser): reduce translated block dispatch - #74

Merged
replghost merged 3 commits into
mainfrom
perf/browser-pvm-dispatch
Oct 6, 2026
Merged

replghost merged 3 commits into
mainfrom
perf/browser-pvm-dispatch

Conversation

@replghost

@replghost replghost commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

CPU-heavy translated PolkaVM guests paid an indirect tail-dispatch every 16 instructions. Halo campaign execution saturated the PVM worker while the main and GPU workers remained mostly idle.

Change

  • split long PolkaVM blocks every 64 instructions instead of every 16
  • keep the existing 128-block generated-function bound
  • document the translated-dispatch tradeoff

Gas accounting, block targets, hostcall resumption, trap PCs, and partition boundaries are unchanged.

Verification

  • cargo test -p polkavm-wasm-compiler: 18 passed
  • browser runtime Node suite: 309 passed
  • matched actual-a10/WebGPU benchmark, same optimized guest and 128-block grouping:
    • 16-instruction split: 28.6 FPS during the first measured campaign window; 14.8 FPS over a later 120.0 s heavy segment
    • 64-instruction split: 38.0 FPS during the first measured campaign window; 19.0 FPS over a later 120.0 s heavy segment
    • improvement: 33% in the initial window and 29% in the sustained heavy segment

The performance run used local retail map bytes only; no retail data is included in the repository, logs, or artifacts.

@replghost
replghost merged commit 1d553e4 into main Oct 6, 2026
7 checks passed
@replghost
replghost deleted the perf/browser-pvm-dispatch branch October 6, 2026 00:23
replghost added a commit that referenced this pull request Oct 8, 2026
#59)

* Add mediated input runtime API

* fix(browser): retry transient WebGPU device restoration

* chore(assets): sync WebGPU recovery worker

* fix(assets): update embedded recovery digests

* release: prepare v0.3.2-rc.2 candidate

* fix(browser): resume bounded translated gas slices

* release: prepare v0.3.2-rc.3 candidate

* perf(browser): reduce translated block dispatch (#74)

* perf(browser): reduce translated block dispatch

* chore(browser): refresh translated runtime asset

* fix(browser): record refreshed asset digests

* release: prepare v0.3.2-rc.4 candidate

* fix(runtime): correlate mediated input and bound GPU recovery

* test(runtime): use integrated lifecycle and compiled program fixtures

* build: refresh mediated-input runtime and conformance assets

* style: format mediated-input lifecycle regressions

* fix(gpu): preserve surface changes during device recovery

* fix(gpu): preserve offscreen work across surface resize

* release: prepare v0.3.2-rc.5 source versions

* build(runtime): generate immutable rc.5 resize release assets

* fix(browser): map heap-backed fiber stacks in compiled guests

* perf(runtime): add exact binary32 intrinsics and local continuation (#76)

* perf(runtime): add exact binary32 intrinsics and local continuation

* fix(ci): verify immutable releases on duplicate tag events

* perf(compiler): cache guest registers and streamline forward dispatch

* release: qualify optimized browser runtime rc.8

* release: qualify integrated runtime fixes for rc.9
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