Conversation
# Conflicts: # openequivariance/openequivariance/templates/jinja_utils.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR is a follow-up to discussion #221 and provides an alternative JAX kernel for UVU convolutions that adapts the receiver-side streaming approach from Vladimir Chorošajev and Cédric Bény.
The main difference from the standard OEQ convolution kernels is the ownership. In the forward pass, each thread owns one (receiver, channel) pair, scans the edges incident to that receiver, and reduces the convolution result locally. In the backward pass, each warp owns one edge, processes the channels in parallel, writes radial-weight gradients directly, reduces spherical-harmonic gradients across channels within the warp, and performs atomic additions for node feature gradients. Unlike the SOBEK schedule, the implementation consumes materialized per-edge weights, is specialized to UVU convolutions, and does not support general UVW convolutions.
The PR moves the standard JAX Oeq convolutions and the new streaming convolution behind a common public interface. Either implementation can be explicitly selected via a
modeargument, if supported. Theautomode selects the streaming path for UVU and reducible UVW convolutions and falls back to the standard path otherwise.I developed this PR with assistance from Codex. I have read and reviewed the submitted changes. I tested the changes on CUDA, but have not tested the HIP backend.