Skip to content

WaterLily performance regression on CPU multi-threading backend for Julia 1.13.0 #696

@b-fg

Description

@b-fg

The following tests show the performance of WaterLily on Julia 1.11.5 vs 1.13.0-rc1 under different backends. There seems to be a significant performance regression on the KA CPU multi-threading backend, CPUx04. The CPUx01 backend uses SIMD instead of KA and is used for reference. A regression was also observed on Julia 1.12.0, #644.

Benchmark environment: tgv sim_step! (max_steps=25, samples=5)
▶ log2p = 6
┌────────────┬───────────┬────────────┬─────────────┬────────┬─────────┬─────────┬─────────┬──────────────────┬──────────┐
│    Backend │ WaterLily │      Julia │ Allocations │ GC [%] │ Min [s] │ Med [s] │ Max [s] │ Cost [ns/DOF/dt] │ Speed-up │
├────────────┼───────────┼────────────┼─────────────┼────────┼─────────┼─────────┼─────────┼──────────────────┼──────────┤
│     CPUx01 │    v1.6.1 │     1.11.5 │        1056 │   0.00 │    0.99 │    1.08 │    1.18 │           151.63 │     1.00 │
│     CPUx01 │    v1.6.1 │ 1.13.0-rc1 │        1055 │   0.00 │    1.04 │    1.15 │    1.21 │           158.71 │     0.96 │
│     CPUx04 │    v1.6.1 │     1.11.5 │      473231 │   0.00 │    0.66 │    0.70 │    0.71 │           101.06 │     1.50 │
│     CPUx04 │    v1.6.1 │ 1.13.0-rc1 │      473030 │   0.00 │    1.00 │    1.17 │    1.29 │           152.73 │     0.99 │
│ GPU-NVIDIA │    v1.6.1 │     1.11.5 │      519531 │   0.00 │    0.09 │    0.10 │    0.11 │            14.41 │    10.52 │
│ GPU-NVIDIA │    v1.6.1 │ 1.13.0-rc1 │      345454 │   0.00 │    0.10 │    0.10 │    0.11 │            15.59 │     9.73 │
└────────────┴───────────┴────────────┴─────────────┴────────┴─────────┴─────────┴─────────┴──────────────────┴──────────┘
▶ log2p = 7
┌────────────┬───────────┬────────────┬─────────────┬────────┬─────────┬─────────┬─────────┬──────────────────┬──────────┐
│    Backend │ WaterLily │      Julia │ Allocations │ GC [%] │ Min [s] │ Med [s] │ Max [s] │ Cost [ns/DOF/dt] │ Speed-up │
├────────────┼───────────┼────────────┼─────────────┼────────┼─────────┼─────────┼─────────┼──────────────────┼──────────┤
│     CPUx01 │    v1.6.1 │     1.11.5 │        1155 │   0.00 │    7.03 │    7.08 │    7.14 │           134.01 │     1.00 │
│     CPUx01 │    v1.6.1 │ 1.13.0-rc1 │        1155 │   0.00 │    7.44 │    7.47 │    7.58 │           141.83 │     0.94 │
│     CPUx04 │    v1.6.1 │     1.11.5 │      508180 │   0.00 │    4.25 │    4.63 │    5.35 │            81.14 │     1.65 │
│     CPUx04 │    v1.6.1 │ 1.13.0-rc1 │      507980 │   0.00 │    6.28 │    6.76 │    7.47 │           119.69 │     1.12 │
│ GPU-NVIDIA │    v1.6.1 │     1.11.5 │      560755 │   0.00 │    0.66 │    0.66 │    0.67 │            12.59 │    10.64 │
│ GPU-NVIDIA │    v1.6.1 │ 1.13.0-rc1 │      378728 │   0.00 │    0.71 │    0.72 │    0.72 │            13.49 │     9.94 │
└────────────┴───────────┴────────────┴─────────────┴────────┴─────────┴─────────┴─────────┴──────────────────┴──────────┘
Benchmark environment: sphere
▶ log2p = 3
┌────────────┬───────────┬────────────┬─────────────┬────────┬─────────┬─────────┬─────────┬──────────────────┬──────────┐
│    Backend │ WaterLily │      Julia │ Allocations │ GC [%] │ Min [s] │ Med [s] │ Max [s] │ Cost [ns/DOF/dt] │ Speed-up │
├────────────┼───────────┼────────────┼─────────────┼────────┼─────────┼─────────┼─────────┼──────────────────┼──────────┤
│     CPUx01 │    v1.6.1 │     1.11.5 │         955 │   0.00 │    1.01 │    1.06 │    1.18 │           137.47 │     1.00 │
│     CPUx01 │    v1.6.1 │ 1.13.0-rc1 │         955 │   0.00 │    1.06 │    1.08 │    1.21 │           143.59 │     0.96 │
│     CPUx04 │    v1.6.1 │     1.11.5 │      437230 │   0.00 │    0.60 │    0.61 │    0.62 │            81.01 │     1.70 │
│     CPUx04 │    v1.6.1 │ 1.13.0-rc1 │      437030 │   0.00 │    1.01 │    1.11 │    1.16 │           137.22 │     1.00 │
│ GPU-NVIDIA │    v1.6.1 │     1.11.5 │      480879 │   0.00 │    0.09 │    0.09 │    0.09 │            11.97 │    11.48 │
│ GPU-NVIDIA │    v1.6.1 │ 1.13.0-rc1 │      327128 │   0.00 │    0.09 │    0.10 │    0.11 │            12.84 │    10.71 │
└────────────┴───────────┴────────────┴─────────────┴────────┴─────────┴─────────┴─────────┴──────────────────┴──────────┘
▶ log2p = 4
┌────────────┬───────────┬────────────┬─────────────┬────────┬─────────┬─────────┬─────────┬──────────────────┬──────────┐
│    Backend │ WaterLily │      Julia │ Allocations │ GC [%] │ Min [s] │ Med [s] │ Max [s] │ Cost [ns/DOF/dt] │ Speed-up │
├────────────┼───────────┼────────────┼─────────────┼────────┼─────────┼─────────┼─────────┼──────────────────┼──────────┤
│     CPUx01 │    v1.6.1 │     1.11.5 │        1055 │   0.00 │    9.65 │    9.80 │    9.88 │           163.55 │     1.00 │
│     CPUx01 │    v1.6.1 │ 1.13.0-rc1 │        1055 │   0.00 │    9.99 │   10.08 │   10.18 │           169.30 │     0.97 │
│     CPUx04 │    v1.6.1 │     1.11.5 │      472180 │   0.00 │    4.28 │    4.38 │    4.39 │            72.60 │     2.25 │
│     CPUx04 │    v1.6.1 │ 1.13.0-rc1 │      471980 │   0.00 │    5.81 │    7.59 │    8.79 │            98.43 │     1.66 │
│ GPU-NVIDIA │    v1.6.1 │     1.11.5 │      522130 │   0.00 │    0.70 │    0.71 │    0.71 │            11.89 │    13.76 │
│ GPU-NVIDIA │    v1.6.1 │ 1.13.0-rc1 │      365427 │   0.00 │    0.76 │    0.77 │    0.79 │            12.90 │    12.68 │
└────────────┴───────────┴────────────┴─────────────┴────────┴─────────┴─────────┴─────────┴──────────────────┴──────────┘
Benchmark environment: jelly
▶ log2p = 5
┌────────────┬───────────┬────────────┬─────────────┬────────┬─────────┬─────────┬─────────┬──────────────────┬──────────┐
│    Backend │ WaterLily │      Julia │ Allocations │ GC [%] │ Min [s] │ Med [s] │ Max [s] │ Cost [ns/DOF/dt] │ Speed-up │
├────────────┼───────────┼────────────┼─────────────┼────────┼─────────┼─────────┼─────────┼──────────────────┼──────────┤
│     CPUx01 │    v1.6.1 │     1.11.5 │        1390 │   0.00 │    0.87 │    0.89 │    0.92 │           264.49 │     1.00 │
│     CPUx01 │    v1.6.1 │ 1.13.0-rc1 │        1390 │   0.00 │    0.92 │    0.93 │    0.97 │           279.29 │     0.95 │
│     CPUx04 │    v1.6.1 │     1.11.5 │     1296258 │   0.00 │    0.70 │    0.73 │    0.74 │           214.50 │     1.23 │
│     CPUx04 │    v1.6.1 │ 1.13.0-rc1 │     1296258 │   0.00 │    1.04 │    1.23 │    1.66 │           316.02 │     0.84 │
│ GPU-NVIDIA │    v1.6.1 │     1.11.5 │      795072 │   0.00 │    0.11 │    0.11 │    0.13 │            32.80 │     8.06 │
│ GPU-NVIDIA │    v1.6.1 │ 1.13.0-rc1 │      531130 │   0.00 │    0.12 │    0.14 │    0.15 │            35.45 │     7.46 │
└────────────┴───────────┴────────────┴─────────────┴────────┴─────────┴─────────┴─────────┴──────────────────┴──────────┘
▶ log2p = 6
┌────────────┬───────────┬────────────┬─────────────┬────────┬─────────┬─────────┬─────────┬──────────────────┬──────────┐
│    Backend │ WaterLily │      Julia │ Allocations │ GC [%] │ Min [s] │ Med [s] │ Max [s] │ Cost [ns/DOF/dt] │ Speed-up │
├────────────┼───────────┼────────────┼─────────────┼────────┼─────────┼─────────┼─────────┼──────────────────┼──────────┤
│     CPUx01 │    v1.6.1 │     1.11.5 │        1852 │   0.00 │    6.42 │    6.68 │    6.79 │           245.02 │     1.00 │
│     CPUx01 │    v1.6.1 │ 1.13.0-rc1 │        1852 │   0.00 │    6.68 │    6.88 │    7.13 │           254.88 │     0.96 │
│     CPUx04 │    v1.6.1 │     1.11.5 │     3027277 │   0.00 │    4.02 │    4.28 │    4.63 │           153.52 │     1.60 │
│     CPUx04 │    v1.6.1 │ 1.13.0-rc1 │     3027277 │   0.00 │    5.96 │    6.36 │    6.88 │           227.45 │     1.08 │
│ GPU-NVIDIA │    v1.6.1 │     1.11.5 │     1011053 │   0.00 │    0.47 │    0.50 │    0.51 │            18.08 │    13.55 │
│ GPU-NVIDIA │    v1.6.1 │ 1.13.0-rc1 │      675930 │   0.00 │    0.53 │    0.54 │    0.55 │            20.26 │    12.09 │
└────────────┴───────────┴────────────┴─────────────┴────────┴─────────┴─────────┴─────────┴──────────────────┴──────────┘

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions