trixi-framework / trixi-framework/Trixi.jl

Initial support for MPI parallelization

Open
#159 9 comments 0 reactions 3 assignees Claimed by @lchristm View on GitHub
discussion parallelization performance
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.