-
Notifications
You must be signed in to change notification settings - Fork 207
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
Distributed mixed FFT / vertical tridiagonal solver #2538
Conversation
Co-authored-by: Navid C. Constantinou <[email protected]>
…ananigans.jl into glw/distributed-fft-xy
@jipolanco I just send up another big commit --- I realized that we could use Oceananigans.jl/src/Distributed/distributed_fft_based_poisson_solver.jl Lines 307 to 314 in e1cac85
and Oceananigans.jl/src/Distributed/distributed_fft_based_poisson_solver.jl Lines 162 to 183 in e1cac85
Let me know what you think. |
@glwagner it seems the only reason the tests aren't passing is because
Maybe fix that and merge since (apparently) this PR is otherwise ready to go? |
There's a less trivial error here: https://buildkite.com/clima/oceananigans/builds/7523#311535ff-f56d-410e-8571-c3b1d9757daf I'll try to restart the whole build and see what happens. |
Just realized the distributed tests have been running for 6 days. I guess it's fair to say there's still something to fix lol Just killed it to save resources |
@tomchor are you able to test locally? I believe these passed locally for me, so the problem might be relatively easy to solve. |
I've never tested anything in parallel locally, but I can definitely try |
@glwagner how do you run locally? do you use |
…ributed-fourier-tridiagonal
This is stale and has been superceded |
This PR builds off #2536 and implements a distributed Poisson solver that users horizontal FFTs and a vertical tridiagonal solve, with more help from @jipolanco.
When distributed in (x, y), this kind of solver is more expensive than a pure FFT-based solver, because it requires 4 additional transpositions + communication.
For problems that are only distributed in x or y (eg, slab decomposition), we can avoid the additional transpositions.
Implementing that optimization is TODO for this PR.Some of the details are discussed on jipolanco/PencilFFTs.jl#44.
Future work, which would require abstracting the implementation of hydrostatic pressure in
NonhydrostaticModel
(and, for friendliness, forbidding the use of VerticallyImplicitTimeDiscretization), could in principle support a more efficient version of this solver with pencil decomposition in (y, z) or (x, z). This memory layout would increase performance for very large problems that require a 2D domain decomposition, since decomposing in (y, z) or (x, z) reduces the number of transposes needed by 4 over (x, y). This feature is easy to code, but might take some time to test. We've already noticed on #1910 that lumping hydrostatic and nonhydrostatic pressure produces different (perhaps lower quality) solutions.TODO: