Skip to content
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

Node distributed Green's function mesh-products with global transpose operations #949

Open
HugoStrand opened this issue Jul 5, 2024 · 0 comments

Comments

@HugoStrand
Copy link
Member

Summary

This is a feature request discussed during the Triqs meeting 2024 in Paris. I would like to have functionality to exploit the total memory distributed over compute nodes in an MPI parallell job to store and work with Triqs Green's functions, e.g.

$$ G(\mathbf{k}, i\omega_n) $$

in combination with an all-to-all transpose operation, this would allow to implement large scale GW like calculations.

Motivation

The lattice calculations in TPRF are today memory limited to the node local memory, even when running calculations on multiple nodes, since there is no direct TRIQS support to distribute Green's function objects in memory over multiple nodes.

On the request of @Wentzell this is an attempt to briefly summarise the idea.

Implementation

The basic containers and operations envisaged to enable this type of Triqs library meshes and Green's functions would be some form of multidimensional tensor with one or more dimension spread across MPI ranks, in combination with a global transpose operation, that re-arranges the tensor, from distributed spread over one dimension to another.

In the spirit of

N = 10**4
A_tt = array((N, N), spread_axes=(0,))
A_tw = fft(A_tt, axis=1)
A_tw = redistribute(A_tw, spread_axes=(1,))
A_ww = fft(A_tw, axis=0)

one known implementation of this idea had been done in the FFTW3 library, to implement 3D fast Fourier transforms, see https://fftw.org/fftw3_doc/FFTW-MPI-Transposes.html

It seems like some of this might have been ironed out by @cnyeh in the AIMBES project.

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

No branches or pull requests

1 participant