trixi-framework / Trixi.jl

Trixi.jl: Adaptive high-order numerical simulations of conservation laws in Julia
https://trixi-framework.github.io/Trixi.jl
MIT License
505 stars 98 forks source link

Performance evaluation for Julia v1.11 #1916

Open sloede opened 2 months ago

sloede commented 2 months ago

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)
  2. Computation of metric terms for P4estMesh/StructuredMesh (e.g., here)
  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)

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.