Skip to content

Add RowBlockOp for vertically stacked blocks of rows - #46

Open
nHackel wants to merge 1 commit into
mainfrom
nh/blockrows
Open

nHackel wants to merge 1 commit into
mainfrom
nh/blockrows

Conversation

@nHackel

@nHackel nHackel commented Nov 1, 2026 •

Copy link
Copy Markdown
Member

Adds RowBlockOp(ops, rows): operators stacked vertically, each filling its rows of the result (contiguous ranges or interleaved index vectors).

  • Applied as a whole it equals the stacked matrix (product, transpose, adjoint).
  • normalOperator is the sum of the blocks' normal operators (also weighted).
  • rowblocks(op) returns the blocks for block-iterative solvers.
  • Constructors: RowBlockOp(ops) for contiguous blocks and RowBlockOp(A, nblocks; mode = :interleaved | :contiguous | :random) for matrices, similar to CIL's partition modes.
  • On GPUs, contiguous blocks work on views, other rows are gathered into a buffer per block; adapt moves index vectors to the device as integers.
  • Tests (also with JLArrays) and a tutorial. Version 2.5.0.

Needed by the OS-SART solver in RegularizedLeastSquares.jl (PR) and used by CTOperators.jl (PR).

🤖 Generated with Claude Code

RowBlockOp(ops, rows) stacks operators vertically, each filling its rows of the result (contiguous
or interleaved); rowblocks returns the blocks for block-iterative solvers such as OS-SART. Its normal
operator is the sum of the blocks' normal operators. Constructors for contiguous blocks and for
splitting a matrix into interleaved, contiguous or random blocks. Version 2.5.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
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