Skip to content

Regression in performance of FEM-code using ForwardDiff in 1.10 vs 1.11 #60243

@KristofferC

Description

@KristofferC

The code below runs the file at https://github.com/Ferrite-FEM/Ferrite.jl/blob/kc/landau_opt/docs/src/literate-gallery/landau.jl. It has some options to run things threaded but that is not relevant here. There is also a multithreading regression, but that is tracked in #60241

If we run this code on 1.10:

git clone https://github.com/Ferrite-FEM/Ferrite.jl/
cd Ferrite.jl 
git checkout kc/landau_opt  # 546587a5e3ac40c8158a0cca
#### 1.10 ####

julia +1.10 --project=docs -e 'using Pkg; Pkg.update()'

julia +1.10 --project=docs docs/src/literate-gallery/landau.jl

# F: 0.016800 seconds
# ∇F!: 0.036300 seconds
# ∇²F!: 0.776329 seconds (90.00 k allocations: 46.692 MiB)
#  6.669979 seconds (1.56 M allocations: 1.325 GiB, 2.26% gc time, 6.67% compilation time)

Now, if we run this on 1.11:

#### 1.11 ####

julia +1.11 --project=docs -e 'using Pkg; Pkg.update()'

julia +1.11 --project=docs --threads=8 docs/src/literate-gallery/landau.jl

# F: 0.014718 seconds
# ∇F!: 0.079363 seconds
# ∇²F!: 1.237756 seconds (180.00 k allocations: 49.439 MiB, 0.05% gc time)
#  9.424253 seconds (3.51 M allocations: 1.392 GiB, 1.06% gc time, 5.82% compilation time)

We can see the following:

  • The code allocates around 2x more
  • Runtime is about 50% slower.

I'll see if I can bisect something

Metadata

Metadata

Assignees

No one assigned

    Labels

    performanceMust go fasterregressionRegression in behavior compared to a previous version

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions