trixi-framework / trixi-framework/Trixi.jl
Initial support for MPI parallelization
- Dominant language
- Julia
- Stars
- 731
- Forks
- 166
- Avg merge
- 2d 18h
- Merged PRs (30d)
- 25
Description
This issue is to keep track of the necessary steps towards an initial parallel octree implementation in Trixi. It should thus be amended as we progress and gather more experience about which ideas work and which don't. The general goal of the initial MPI implementation is to support nearly all of Trixi's current features in parallel and in the simplest possible way (at the cost of scalability).
- [x] **WP1: Parallel 2D simulations on static, uniform mesh** (#167)
(achievements: basic infrastructure for parallelization in place, parallelized DG solver)
- [x] Create redundant octree with concept of cells belonging to different MPI subdomains
- [x] Simple partitioning of the octree (i.e., assign cells to different domains, support for 2^n MPI ranks)
- [x] Add mesh type as new parameter to DG solver to be able to specialize methods for parallel execution
- [x] Add required MPI data structures to DG solver
- [x] Calculate L2/Linf errors in parallel
- [x] Exchange MPI surface data in DG solver
- [x] Validate existing uniform setups in parallel
- [x] Parallel I/O (poor man's version)
- [x] Testing in parallel
- [x] **WP2: Non-uniform meshes** (#898)
(achievements: domain partitioning/space filling curve)
- [x] Add required MPI data structures for MPI mortars to DG solver
- [x] Allow arbitrary numbers of domains
- [x] **WP3: AMR** (#361)
(achievements: infrastructure for parallel mesh *and* solver adaptation)
- [x] Distribute AMR indicators in parallel and adapt mesh and solver
- [x] Re-build MPI data structures in mesh and solver
- [x] **WP4: Load balancing** (#390)
(achievements: ability to redistribute solver data and to do "online restarts")
- [x] Implement basic load balancing based on cell count
- [x] **WP 5: Extension to 3D** (#1062, #1091)
(achievements: everything works in 3D on the `P4estMesh`)
- [ ] 3D `TreeMesh`
- [ ] **WP 6: Support for multi-physics simulations**
(achievements: all Euler-gravity tests work in parallel)
- [ ] Static mesh
- [ ] AMR mesh
- [ ] Load balancing
Unassigned:
- [ ] Support for MHD (missing: non-conservative surface flux support)
- [ ] Support for alpha smoothing in `calc_blending_factors`
- [ ] `TreeMesh`: Implement partitioning scheme that preserves spatial locality (probably Morton or Hilbert space-filling
curve)
- [ ] Weight-based load balancing
- [x] Parallel I/O with external parallel HDF5 library (#1332)
Contributor guide
Assessment
This issue has not been assessed yet.