-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for permutational index symmetry #125
Comments
Dear @Krzmbrzl , support for this is still lacking, as it is not really of interest to us. What kind of permutation symmetry does your use case require? In quantum many body physics, one has symmetric or antisymmetric wave functions in first quantisation. We tend to work in second quantisation. However, if the total particle number is enforced, both descriptions should be equivalent, and have an equal number of degrees of freedom. I am wondering if something can be done with this. For example, an antisymmetric tensor of |
Thank you very much for your feedback @Jutho 👍
I'm working in the field of quantum chemistry, mostly with Coupled Cluster methods. The resulting tensors are almost always "column-symmetric", which comes about due to the particle-1,2 symmetry (i.e. the indistinguishability of electrons). For instance the tensors representing the "coupled cluster amplitudes" have the symmetry
these things can become rather large in typical applications and can therefore end up becoming a memory bottleneck in practical applications (especially once triple excitations In terms of where computational effort could be saved, in Coupled Cluster methods we do non-linear optimization to find a set of cluster amplitudes for which the "residual" tensor becomes zero. That means that in every iteration we compute this residual tensor by means of a series of tensor contractions. This residual (in most cases) also has the previously mentioned column-symmetry. A contribution to such a residual could be
and thus by restricting the "external indices" a, b, i and j to the non-redundant part of Intermediates in our expressions (appearing because we factorize expressions into a series of binary tensor contractions) can in principle show arbitrary index permutation symmetry (it depends on the exact expressions that contribute to the intermediate). However, I believe that being able to support the basic column-symmetry would be a big gain for us already.
That's an interesting suggestion. For the kinds of column symmetry that I'd need, this approach would (to my understanding) require the introduction of composite indices though.
and then express the tensor $O^{ij}{ab}$ as a tensor $O{AB}$ which now has the symmetry
which can be represented by a tensor The problem that I see with this approach is that we can't use the composite index for the expressions that actually compute Finally, wouldn't there be performance issues by introducing tensors that have a huge amount of indices but where each indices runs only over two or three values? I imagine that caching could become problematic for such a data layout 🤔 |
In #50 (comment) I found
I just wanted to come back to it (given that this statement is from 2021) and ask: Has there been any work in this direction in the meantime?
FWIW I think already support in the sense of figuring out that if$f_{ab} = f_{ba}$ , then it is enough to compute and store the elements for $b > a$ (which especially for higher-dimensional tensors can lead to significant memory and also processing time savings).
The text was updated successfully, but these errors were encountered: