Available CUDA Kernels#
Here we list the available CUDA kernels in cuEquivariance and their use cases.
Fused TP#
This kernel is useful for tensor products which have small operand sizes.
ns, nv = 48, 10
irreps_feat = cue.Irreps("O3", f"{ns}x0e+{nv}x1o+{nv}x1e+{ns}x0o")
irreps_sh = cue.Irreps("O3", "0e + 1o + 2e")
cuet.FullyConnectedTensorProduct(irreps_feat, irreps_sh, irreps_feat, layout=cue.ir_mul)
Low level interface (non public API): cuequivariance_ops_torch.FusedTensorProductOp3
and cuequivariance_ops_torch.FusedTensorProductOp4
Uniform 1d#
- This kernel works for STP with subscripts
^(|u),(|u),(|u),(|u)$
^(|u),(|u),(|u)$
A typical use case is the channel wise tensor product used in NequIP.
irreps_feat = 128 * cue.Irreps("O3", "0e + 1o + 2e")
irreps_sh = cue.Irreps("O3", "0e + 1o + 2e + 3o")
cuet.ChannelWiseTensorProduct(irreps_feat, irreps_sh, irreps_feat, layout=cue.ir_mul)
Low level interface (non public API): cuequivariance_ops_torch.TensorProductUniform1d
Symmetric Contractions#
This kernel is designed for the symmetric contraction of MACE.
It supports subscripts u,u,u
, u,u,u,u
, etc up to 8 operands.
The first operand is the weights which are optionally indexed by integers.
The last operand is the output.
The other operands are the repeated input.
irreps_feat = 128 * cue.Irreps("O3", "0e + 1o + 2e")
cuet.SymmetricContraction(irreps_feat, irreps_feat, 3, 1, layout=cue.ir_mul)
Low level interface (non public API): cuequivariance_ops_torch.SymmetricTensorContraction