Skip to content

Add store_transpose: store transposed feedbacks alongside normal feedbacks, expose evaluate_transpose - #36

Merged
darnstrom merged 5 commits into
mainfrom
copilot/add-store-transpose-setting
Apr 18, 2026
Merged

darnstrom merged 5 commits into
mainfrom
copilot/add-store-transpose-setting

Conversation

Copilot AI commented Apr 17, 2026

Copy link
Copy Markdown
Contributor

When generating C code, it's useful to have feedbacks stored in transposed layout (solutions in the inner/contiguous index) for SIMD-friendly evaluation — but the normal layout must still be present since evaluate uses it. This PR stores both arrays and adds a dedicated evaluate_transpose function.

Changes

  • codegen always writes pdaqp_feedbacks (normal layout: parameters in inner index)
  • When store_transpose=true, also writes pdaqp_feedbacks_T (transposed: solutions in inner index) alongside the normal array
  • evaluate is unchanged — always uses pdaqp_feedbacks
  • evaluate_transpose is generated when store_transpose=true; uses outer-parameter / inner-solution loop over pdaqp_feedbacks_T; applies output clipping consistently with evaluate
  • Header declares evaluate_transpose only when store_transpose=true

Usage

# Both pdaqp_feedbacks and pdaqp_feedbacks_T written; both evaluate and evaluate_transpose generated
codegen(sol; dir="out", store_transpose=true)

Generated C:

// Normal evaluate — row-major feedbacks, outer loop over solutions
void pdaqp_evaluate(c_float* parameter, c_float* solution);

// Transposed evaluate — solutions contiguous in memory, outer loop over parameters
void pdaqp_evaluate_transpose(c_float* parameter, c_float* solution);

@darnstrom
darnstrom marked this pull request as ready for review April 18, 2026 08:12
@darnstrom
darnstrom merged commit 0059bfa into main Apr 18, 2026
4 checks passed
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.

2 participants