KernelAbstractions.jl icon indicating copy to clipboard operation
KernelAbstractions.jl copied to clipboard

WaterLily performance regression on CPU multi-threading backend for Julia 1.12.0

Open b-fg opened this issue 2 months ago • 1 comments

Here are some WaterLily benchmarks with Float32 comparing Julia 1.11.5 with 1.12.0. The KA CPU multi-threading backend shows performance regression on Julia 1.12.0, specially on CPUx04 where allocations are increasing significantly. To run your own benchmarks, please use WaterLily-Benchmarks and

sh benchmark.sh -v "1.11.5 release" -w "master" -t "1 2 4" -b "Array CuArray" -c "tgv jelly" -p "6,7 5,6" -s "100 100" -ft "Float32 Float32"
julia --project compare.jl

(Note that env var $WATERLILY_DIR needs to be set to your local WaterLily directory, or alternatively pass -wd "my/waterlily/dir" into benchmarh.sh).

--

Benchmark environment: tgv sim_step! (max_steps=100)
▶ log2p = 6
┌────────────┬───────────┬────────┬───────────┬─────────────┬────────┬──────────┬──────────────────┬──────────┐
│    Backend │ WaterLily │  Julia │ Precision │ Allocations │ GC [%] │ Time [s] │ Cost [ns/DOF/dt] │ Speed-up │
├────────────┼───────────┼────────┼───────────┼─────────────┼────────┼──────────┼──────────────────┼──────────┤
│     CPUx01 │    master │ 1.11.5 │   Float32 │        1807 │   0.00 │     4.16 │           158.85 │     1.00 │
│     CPUx01 │    master │ 1.12.0 │   Float32 │        1807 │   0.00 │     4.28 │           163.16 │     0.97 │
│     CPUx02 │    master │ 1.11.5 │   Float32 │     1687271 │   0.00 │     4.82 │           183.72 │     0.86 │
│     CPUx02 │    master │ 1.12.0 │   Float32 │     1651033 │   0.00 │     5.55 │           211.89 │     0.75 │
│     CPUx04 │    master │ 1.11.5 │   Float32 │     2334995 │   0.00 │     2.86 │           109.25 │     1.45 │
│     CPUx04 │    master │ 1.12.0 │   Float32 │   193455597 │   9.58 │     4.47 │           170.65 │     0.93 │
│ GPU-NVIDIA │    master │ 1.11.5 │   Float32 │     3041056 │   0.00 │     0.60 │            22.73 │     6.99 │
│ GPU-NVIDIA │    master │ 1.12.0 │   Float32 │     2208405 │   0.00 │     0.59 │            22.35 │     7.11 │
└────────────┴───────────┴────────┴───────────┴─────────────┴────────┴──────────┴──────────────────┴──────────┘
▶ log2p = 7
┌────────────┬───────────┬────────┬───────────┬─────────────┬────────┬──────────┬──────────────────┬──────────┐
│    Backend │ WaterLily │  Julia │ Precision │ Allocations │ GC [%] │ Time [s] │ Cost [ns/DOF/dt] │ Speed-up │
├────────────┼───────────┼────────┼───────────┼─────────────┼────────┼──────────┼──────────────────┼──────────┤
│     CPUx01 │    master │ 1.11.5 │   Float32 │        1807 │   0.00 │    25.66 │           122.35 │     1.00 │
│     CPUx01 │    master │ 1.12.0 │   Float32 │        1807 │   0.00 │    26.23 │           125.08 │     0.98 │
│     CPUx02 │    master │ 1.11.5 │   Float32 │     1571048 │   0.00 │    29.16 │           139.06 │     0.88 │
│     CPUx02 │    master │ 1.12.0 │   Float32 │     1537319 │   0.00 │    31.40 │           149.75 │     0.82 │
│     CPUx04 │    master │ 1.11.5 │   Float32 │     2175214 │   0.00 │    17.07 │            81.41 │     1.50 │
│     CPUx04 │    master │ 1.12.0 │   Float32 │   951576349 │   9.22 │    24.21 │           115.46 │     1.06 │
│ GPU-NVIDIA │    master │ 1.11.5 │   Float32 │     2784710 │   0.00 │     3.03 │            14.44 │     8.47 │
│ GPU-NVIDIA │    master │ 1.12.0 │   Float32 │     2329316 │   0.00 │     3.12 │            14.87 │     8.23 │
└────────────┴───────────┴────────┴───────────┴─────────────┴────────┴──────────┴──────────────────┴──────────┘
Benchmark environment: jelly sim_step! (max_steps=100)
▶ log2p = 5
┌────────────┬───────────┬────────┬───────────┬─────────────┬────────┬──────────┬──────────────────┬──────────┐
│    Backend │ WaterLily │  Julia │ Precision │ Allocations │ GC [%] │ Time [s] │ Cost [ns/DOF/dt] │ Speed-up │
├────────────┼───────────┼────────┼───────────┼─────────────┼────────┼──────────┼──────────────────┼──────────┤
│     CPUx01 │    master │ 1.11.5 │   Float32 │        7107 │   0.00 │     3.49 │           266.22 │     1.00 │
│     CPUx01 │    master │ 1.12.0 │   Float32 │        6307 │   0.00 │     3.54 │           269.76 │     0.99 │
│     CPUx02 │    master │ 1.11.5 │   Float32 │     3244853 │   0.00 │     5.30 │           404.21 │     0.66 │
│     CPUx02 │    master │ 1.12.0 │   Float32 │     3174214 │   0.00 │     6.16 │           470.05 │     0.57 │
│     CPUx04 │    master │ 1.11.5 │   Float32 │     4491947 │   0.67 │     3.37 │           257.31 │     1.03 │
│     CPUx04 │    master │ 1.12.0 │   Float32 │   299427100 │  10.59 │     5.44 │           414.85 │     0.64 │
│ GPU-NVIDIA │    master │ 1.11.5 │   Float32 │     5805841 │   1.49 │     0.98 │            74.80 │     3.56 │
│ GPU-NVIDIA │    master │ 1.12.0 │   Float32 │     4179289 │   0.00 │     0.89 │            68.16 │     3.91 │
└────────────┴───────────┴────────┴───────────┴─────────────┴────────┴──────────┴──────────────────┴──────────┘
▶ log2p = 6
┌────────────┬───────────┬────────┬───────────┬─────────────┬────────┬──────────┬──────────────────┬──────────┐
│    Backend │ WaterLily │  Julia │ Precision │ Allocations │ GC [%] │ Time [s] │ Cost [ns/DOF/dt] │ Speed-up │
├────────────┼───────────┼────────┼───────────┼─────────────┼────────┼──────────┼──────────────────┼──────────┤
│     CPUx01 │    master │ 1.11.5 │   Float32 │        8307 │   0.00 │    25.63 │           244.38 │     1.00 │
│     CPUx01 │    master │ 1.12.0 │   Float32 │        7307 │   0.00 │    26.46 │           252.35 │     0.97 │
│     CPUx02 │    master │ 1.11.5 │   Float32 │     4229004 │   0.00 │    28.61 │           272.88 │     0.90 │
│     CPUx02 │    master │ 1.12.0 │   Float32 │     4136532 │   0.00 │    30.73 │           293.07 │     0.83 │
│     CPUx04 │    master │ 1.11.5 │   Float32 │     5860776 │   0.17 │    17.27 │           164.69 │     1.48 │
│     CPUx04 │    master │ 1.12.0 │   Float32 │  1592091668 │  10.72 │    26.24 │           250.23 │     0.98 │
│ GPU-NVIDIA │    master │ 1.11.5 │   Float32 │     7780323 │   0.48 │     3.26 │            31.14 │     7.85 │
│ GPU-NVIDIA │    master │ 1.12.0 │   Float32 │     6813568 │   0.51 │     3.24 │            30.92 │     7.90 │
└────────────┴───────────┴────────┴───────────┴─────────────┴────────┴──────────┴──────────────────┴──────────┘

b-fg avatar Oct 14 '25 16:10 b-fg

Linking from https://github.com/WaterLily-jl/WaterLily.jl/pull/261#issuecomment-3402391314

b-fg avatar Oct 14 '25 16:10 b-fg