Avoid copy in twist for tensors with bosonic braiding
#305
+4
−1
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.
When profiling some AD-based optimizations, I noticed the
twists that occur in therrules of the tensor operations show up quite prominently sometimes. This was caused by the fact that by defaulttwistcopies its input before callingtwist!, even for tensors with bosonic braiding for whichtwist!does nothing in the end.Here I just added the check for trivial twists from
twist!totwistto avoid a copy for trivial twists. I don't know if anything really relies on the fact thattwistmakes a copy though. If this is the case, maybe there's a different way to handle trivial twists in the tensor operations pullbacks themselves?