Skip to content

Device path: per-trial mirrors, the accept pass and unused plasma buffers #103

Open

Description

@jtravs

Found by reading native/src/general.cpp. The effect has not been measured on a GPU.

Allocate the band buffers only for band plasma, use NormSums on devices, and keep persistent pinned mirrors as adams_norms_ does, each listed in memory_ledger(), minding that a pinned copy is asynchronous. Measure on an NVIDIA or AMD data-centre GPU; the device rows in benchmarks/history/ are the baseline. The roadmap's general entry gives the wider picture.

Done when

Each change's python -m benchmarks ab --device ratios on a data-centre GPU are in its pull request and show no loss, or it is dropped, and pytest -m gpu passes on a CUDA and a HIP build, which CI does not build.


Checked against commit 9d5d92f; the code links are pinned to it.

Also

Two more device costs, from reading and unmeasured, so both are suspicions:

Added on 2026-11-01, checked against commit 8a9f764.

Activity

  1. added
    performanceSlower or larger than it should be, with no wrong result
    area: nativeThe native backend, threading and FFT planning
    on Nov 1, 2026
  2. jtravs commented on Nov 5, 2026

    @jtravs
    ContributorAuthor

    Where this stands after #520, which isn't merged:

    • low_storage_step's host mirror: one pinned scalar.
    • accept_update: the update and its three norms in one pass, its partial sums in pinned memory.
    • collect_trial and weighted_error's mirrors, on the Runge-Kutta and batch path: not changed.
    • The plasma buffers: not changed. device_trapezoid_plasma still writes plasma_exposure_ without reading it, and a trapezoid device run still allocates the band column's rows.

    No figure isolates the mirror, whose saving should show mainly on small problems. Nothing here has been measured on the Runge-Kutta path, so that's the next thing to time before changing it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: nativeThe native backend, threading and FFT planningperformanceSlower or larger than it should be, with no wrong resultpriority: lowWorth doing, no hurry

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions