trixi-framework / trixi-framework/Trixi.jl

Performance evaluation for Julia v1.11

Open
#1,916 1 comment 2 reactions 0 assignees View on GitHub
performance upstream
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.