trixi-framework / trixi-framework/Trixi.jl
Performance evaluation for Julia v1.11
- Dominant language
- Julia
- Stars
- 731
- Forks
- 167
- Avg merge
- 2d 18h
- Merged PRs (30d)
- 25
Description
As discussed at yesterday's meeting, LoopVectorization.jl, Octavian.jl, and JuliaSIMD in general will be deprecated for Julia v1.11. That is, code is likely to continue to work for the time being, but bugs might not get fixed anymore. It is also to be expected that we will see a performance hit in areas where we heavily rely on LV.jl & friends, especially with the `@turbo` macro.
Some parts of Trixi.jl that are likely to be adversely affected by this have already been identified:
1. `multiply_dimensionwise!` for mortar and AMR projections/interpolations (see [`interpolation.jl`](https://github.com/trixi-framework/Trixi.jl/blob/main/src/solvers/dgsem/interpolation.jl))
2. Computation of metric terms for `P4estMesh`/`StructuredMesh` (e.g., [here](https://github.com/trixi-framework/Trixi.jl/blob/1745df43b6f4aa5801fb1bc29f4d328f37b42035/src/solvers/dgsem_structured/containers_3d.jl#L65))
3. `DGMulti` solver: Several areas where Octavian.jl's `matmul!` (see also #1906), some explicit uses of `@turbo`
4. Manual SIMD optimizations for the EC performance paper (these might not work at all anymore, e.g., [here](https://github.com/trixi-framework/Trixi.jl/blob/1745df43b6f4aa5801fb1bc29f4d328f37b42035/src/solvers/dgsem_structured/dg_3d_compressible_euler.jl#L343-L349))
The decision yesterday was to first proceed with switching CI testing to Julia v1.10 (#1562 - @DanielDoehring is on it!), and to continue monitoring CI testing with v1.11 (#1904 will help). Once v1.11.0 is released, we will revisit this issue and benchmark the aforementioned cases, before we make decisions on how to proceed.
Contributor guide
Research direction
After Julia v1.11.0 is released, benchmark the listed cases, starting with multiply_dimensionwise! in src/solvers/dgsem/interpolation.jl and the metric-term code in src/solvers/dgsem_structured/containers_3d.jl. Also inspect DGMulti matmul! uses related to #1906 and the SIMD code in dg_3d_compressible_euler.jl; done means deciding how each affected area should proceed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- performance
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100