Skip to content

Absorb ciphertext layout changes into plaintext matrix for convolutions - #3335

Draft
mdgrs wants to merge 1 commit into
mainfrom
mdgrs/convAbsorb
Draft

Absorb ciphertext layout changes into plaintext matrix for convolutions#3335
mdgrs wants to merge 1 commit into
mainfrom
mdgrs/convAbsorb

Conversation

@mdgrs

@mdgrs mdgrs commented Aug 14, 2026

Copy link
Copy Markdown
Collaborator

We should be able to avoid rotating the ciphertext after convolutions and push the permutation into the plaintext. For our convolutional networks, this is particularly beneficial because they often look like:

Activation -> Convolution -> Activation' -> Convolution'->...

This feels a bit too complex, but I have not been able to pull it apart into simpler pieces.

@j2kun

j2kun commented Aug 16, 2026

Copy link
Copy Markdown
Collaborator

I will be on vacation for two weeks. If Alex can review the code I can give it a brief scan and then we can merge it

@mdgrs

mdgrs commented Aug 17, 2026

Copy link
Copy Markdown
Collaborator Author

@AlexanderViand tells me that this is quite large to review and I agree. I want to try to simplify this further, so I'll mark it as draft in the meantime. In all cases, I expect to be busy with other unrelated things for the next week or so

@mdgrs
mdgrs marked this pull request as draft August 17, 2026 08:31
AlexanderViand added a commit to belfortlabs/heir that referenced this pull request Aug 19, 2026
…nvolutions"

This reverts commit 8b68a2e, the cherry-pick of google#3335. That PR is
an unreviewed draft and, as its author notes, a runtime optimization rather
than something we need: it avoids rotating the ciphertext after a convolution
by pushing the permutation into the plaintext.

The compact convolution transform used its layoutMatrixShape helper, which the
PR introduces; that call reverts to the matrix shape the kernel was expanded
to, which is what the code used before the PR.
AlexanderViand added a commit to belfortlabs/heir that referenced this pull request Aug 19, 2026
The compact convolution transform took the matrix shape from layoutMatrixShape,
a helper that only exists with google#3335 (an unreviewed draft we are not
carrying). Take the shape the kernel was expanded to instead, which is what the
surrounding code uses.
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