Skip to content

Ambient in-range decode fault (2049-32768): the fallback faults >= the multipass; needs libhrx transient pinning #301

Description

@bong-water-water-bong

Split off from engine#123. The in-range (2049-32768) residual fault is ambient page migration, not the multipass.

Measurements (gfx1151, pinned f5b7f4ad)

  • Clean sequential in-range A/B (d2100, production alignment 4096, N=6 separate llama-bench -p 0 -n 8 -d 2100 -r 1): multipass 0/6 faults, fallback (GGML_HRX_DISABLE_DISPATCH=flash_attention_decode_split) 1/6.
  • 4-concurrent (2xd2100 + 2xd3000, 8 rounds, 32 runs/condition): fallback 2/32 faulting runs vs split 1/32.

So the fault hits the FALLBACK at least as often as the multipass: it is shared-device memory pressure, not the decode-split. Declining the multipass to the fallback cannot reduce it (and would restore the -32% cliff).

Named root fix (from the #123 analysis)

HRX's device buffers here are pageable system memory: the transient arena is one reused hrx_allocator_allocate_buffer(hrx_device_allocator(device), {HRX_MEMORY_TYPE_DEVICE_LOCAL, ...}) (runtime/transient-arena.cpp), and hrx_buffer_params_t in libhrx/include/hrx_runtime.h is {type, access, usage, queue_affinity} with no pin/lock/advise field. The fix belongs in libhrx/hrx-system: pin the allocation, or allocate the transients as non-migratable virtual memory (the pinned runtime already carries the HIP VMM mechanism). That is a runtime change, outside the fork+engine scope of #123.

Filed so #123 can close on its own multipass defect.

Activity

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions