Skip to content

meta(ad): Enzyme custom-rule coverage — operator pullbacks, rule-body constraints, GPU parity #82

Description

@kylebeggs

Umbrella for the three open Enzyme-rule issues. The exchange and BC sweeps have declared-transpose rules over raw storage (_exchange_storage! / _bc_storage! + BlockLayout); the operator sweeps do not, one crash is fixed but not root-caused, and none of it is tested on a GPU or a packed field.

Sub-issues

  1. feat(ad): linear-operator pullback rules (DESIGN §6) — re-verify against current Enzyme #41 — linear-operator pullback rules (DESIGN §6). The upstream tracker it cited closed in February; first step is to re-run the mixed pointer/isbits MWE on current Enzyme and either unblock or re-point.
  2. fix(ad): Enzyme rule on single-grid apply_bc! segfaults on Linux x86_64 #40 — confirm that an allocating rule body is what segfaulted on Linux x86_64. Two changes landed together, so the cause is not isolated; an MWE upstream would turn "rule bodies must not allocate" from folklore into a documented constraint.
  3. test(ad): GPU/packed-field AD parity for the exchange rules #43 — packed-field and GPU AD parity for the exchange rules. Decide and document whether GPU reverse mode is supported or refused; today it is untested.

Invariants that bind every sub-issue

  • A rule is an exact substitution of a declared transpose, never an approximation, and never fires on a path carrying operator parameters (ScalingOp, Advection with a Field coefficient) — test/autodiff.jl guards .
  • Rule arguments may not mix GC pointers with inline floats (Julia 1.12 calling convention); rule bodies may not allocate.
  • A local macOS/aarch64 green run is not evidence about Linux x86_64. Push and read the CI matrix.

🤖 Beep boop — Claude grouped the rules; Kyle is not differentiating himself.

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

    enhancementNew feature or request

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions