Skip to content

CI/benchmarks: Add Distributed and MPI benchmarks - #747

Open
jpsamaroo wants to merge 1 commit into
masterfrom
jps/bench-mp-mr
Open

CI/benchmarks: Add Distributed and MPI benchmarks#747
jpsamaroo wants to merge 1 commit into
masterfrom
jps/bench-mp-mr

Conversation

@jpsamaroo

Copy link
Copy Markdown
Member

Written by Claude

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Dagger benchmarks: dirty vs master

Multi-threaded benchmarks (4 threads)

Dagger benchmarks: dirty vs master

Median time

master dirty master / dirty
array/dagger/N=1024 (block 128)/add (X + X) 26 ± 7.4 ms 23.2 ± 1.9 ms 1.12 ± 0.33
array/dagger/N=1024 (block 128)/alloc (rand) 15 ± 0.71 ms 15.5 ± 0.75 ms 0.966 ± 0.066
array/dagger/N=1024 (block 128)/broadcast (X .+ 1) 14.4 ± 0.49 ms 14.7 ± 1.3 ms 0.979 ± 0.095
array/dagger/N=1024 (block 128)/map (sin.(X)) 14 ± 0.82 ms 12.7 ± 0.36 ms 1.1 ± 0.071
array/dagger/N=1024 (block 128)/norm 17 ± 1.3 ms 14 ± 1.9 ms 1.21 ± 0.19
array/dagger/N=1024 (block 128)/reduce (sum) 0.035 ± 0.0036 s 30.2 ± 3.4 ms 1.16 ± 0.18
array/dagger/N=1024 (block 128)/transpose (permutedims) 17 ± 0.99 ms 15.3 ± 0.68 ms 1.11 ± 0.082
array/dagger/N=1024 (block 512)/add (X + X) 3.75 ± 1.7 ms 4.12 ± 1.4 ms 0.909 ± 0.52
array/dagger/N=1024 (block 512)/alloc (rand) 2.41 ± 0.26 ms 4.8 ± 2.8 ms 0.502 ± 0.3
array/dagger/N=1024 (block 512)/broadcast (X .+ 1) 2.17 ± 2.1 ms 2.3 ± 0.24 ms 0.946 ± 0.92
array/dagger/N=1024 (block 512)/map (sin.(X)) 5.55 ± 0.26 ms 6.05 ± 2.5 ms 0.916 ± 0.37
array/dagger/N=1024 (block 512)/norm 1.88 ± 1 ms 1.12 ± 0.02 ms 1.69 ± 0.92
array/dagger/N=1024 (block 512)/reduce (sum) 2.19 ± 0.3 ms 1.9 ± 0.86 ms 1.15 ± 0.55
array/dagger/N=1024 (block 512)/transpose (permutedims) 5.01 ± 0.44 ms 4.01 ± 0.7 ms 1.25 ± 0.24
array/dagger/N=256 (block 128)/add (X + X) 1.79 ± 2 ms 1.93 ± 2.3 ms 0.923 ± 1.5
array/dagger/N=256 (block 128)/alloc (rand) 2.25 ± 2.3 ms 1.83 ± 1.6 ms 1.23 ± 1.6
array/dagger/N=256 (block 128)/broadcast (X .+ 1) 1.76 ± 0.8 ms 3.78 ± 2.3 ms 0.466 ± 0.36
array/dagger/N=256 (block 128)/map (sin.(X)) 2.24 ± 0.067 ms 1.23 ± 0.068 ms 1.82 ± 0.11
array/dagger/N=256 (block 128)/norm 1.33 ± 2.6 ms 1.32 ± 0.39 ms 1.01 ± 2
array/dagger/N=256 (block 128)/reduce (sum) 3.21 ± 1 ms 4.2 ± 2.8 ms 0.764 ± 0.57
array/dagger/N=256 (block 128)/transpose (permutedims) 3.66 ± 1.5 ms 3.85 ± 1.9 ms 0.952 ± 0.63
array/dagger/N=256 (block 256)/add (X + X) 1.14 ± 0.85 ms 0.775 ± 0.065 ms 1.47 ± 1.1
array/dagger/N=256 (block 256)/alloc (rand) 0.676 ± 0.029 ms 0.68 ± 0.024 ms 0.995 ± 0.055
array/dagger/N=256 (block 256)/broadcast (X .+ 1) 0.6 ± 0.16 ms 0.44 ± 0.033 ms 1.36 ± 0.38
array/dagger/N=256 (block 256)/map (sin.(X)) 0.973 ± 0.017 ms 1.2 ± 0.084 ms 0.814 ± 0.059
array/dagger/N=256 (block 256)/norm 0.393 ± 0.079 ms 0.427 ± 0.024 ms 0.919 ± 0.19
array/dagger/N=256 (block 256)/reduce (sum) 0.572 ± 0.042 ms 0.561 ± 0.018 ms 1.02 ± 0.082
array/dagger/N=256 (block 256)/transpose (permutedims) 0.689 ± 0.069 ms 0.728 ± 0.044 ms 0.947 ± 0.11
linalg/dagger/N=1024 (block 128)/cholesky 0.0834 ± 0.0071 s 0.072 ± 0.015 s 1.16 ± 0.26
linalg/dagger/N=1024 (block 128)/lu 0.152 ± 0.0063 s 0.169 ± 0.022 s 0.899 ± 0.12
linalg/dagger/N=1024 (block 128)/matmul (A*A) 0.167 ± 0.021 s 0.15 ± 0.051 s 1.11 ± 0.4
linalg/dagger/N=1024 (block 128)/matvec (A*x) 17.2 ± 1.8 ms 17 ± 3.3 ms 1.01 ± 0.22
linalg/dagger/N=1024 (block 128)/qr 0.141 ± 0.018 s 0.146 ± 0.014 s 0.971 ± 0.16
linalg/dagger/N=1024 (block 128)/solve (A\b via lu) 0.219 ± 0.006 s 0.21 ± 0.017 s 1.04 ± 0.09
linalg/dagger/N=1024 (block 128)/svd 28 s 28.5 s 0.982
linalg/dagger/N=1024 (block 128)/syrk (A'*A) 0.097 ± 0.0032 s 0.105 ± 0.011 s 0.922 ± 0.1
linalg/dagger/N=1024 (block 512)/cholesky 25.6 ± 4.6 ms 20.3 ± 3.1 ms 1.26 ± 0.3
linalg/dagger/N=1024 (block 512)/lu 0.0462 ± 0.013 s 0.0447 ± 0.0074 s 1.03 ± 0.34
linalg/dagger/N=1024 (block 512)/matmul (A*A) 0.045 ± 0.0024 s 0.0436 ± 0.0072 s 1.03 ± 0.18
linalg/dagger/N=1024 (block 512)/matvec (A*x) 4.15 ± 0.85 ms 2.7 ± 1.5 ms 1.54 ± 0.89
linalg/dagger/N=1024 (block 512)/qr 0.112 ± 0.0046 s 0.112 ± 0.0046 s 1 ± 0.058
linalg/dagger/N=1024 (block 512)/solve (A\b via lu) 0.0528 ± 0.0048 s 0.0531 ± 0.0065 s 0.996 ± 0.15
linalg/dagger/N=1024 (block 512)/svd 0.0368 h 0.0324 h 1.13
linalg/dagger/N=1024 (block 512)/syrk (A'*A) 0.039 ± 0.0051 s 0.0395 ± 0.0029 s 0.987 ± 0.15
linalg/dagger/N=256 (block 128)/cholesky 10.4 ± 2.5 ms 10.3 ± 0.4 ms 1 ± 0.24
linalg/dagger/N=256 (block 128)/lu 11.5 ± 4.5 ms 21 ± 12 ms 0.545 ± 0.37
linalg/dagger/N=256 (block 128)/matmul (A*A) 5.43 ± 1.6 ms 9.2 ± 4 ms 0.59 ± 0.31
linalg/dagger/N=256 (block 128)/matvec (A*x) 4.99 ± 0.8 ms 3.6 ± 2.5 ms 1.39 ± 1
linalg/dagger/N=256 (block 128)/qr 11.9 ± 0.47 ms 13.2 ± 2 ms 0.904 ± 0.14
linalg/dagger/N=256 (block 128)/solve (A\b via lu) 26.5 ± 7.5 ms 26.5 ± 11 ms 0.998 ± 0.5
linalg/dagger/N=256 (block 128)/svd 0.633 ± 0.037 s 0.634 ± 0.0084 s 0.999 ± 0.06
linalg/dagger/N=256 (block 128)/syrk (A'*A) 6.99 ± 1.8 ms 9.98 ± 4.7 ms 0.701 ± 0.37
linalg/dagger/N=256 (block 256)/cholesky 6.41 ± 3.4 ms 2.51 ± 0.2 ms 2.56 ± 1.4
linalg/dagger/N=256 (block 256)/lu 6.47 ± 2.5 ms 6.42 ± 3.7 ms 1.01 ± 0.71
linalg/dagger/N=256 (block 256)/matmul (A*A) 2.27 ± 0.97 ms 2.16 ± 0.24 ms 1.05 ± 0.47
linalg/dagger/N=256 (block 256)/matvec (A*x) 0.976 ± 0.083 ms 1.05 ± 0.86 ms 0.927 ± 0.76
linalg/dagger/N=256 (block 256)/qr 5.06 ± 1.2 ms 4.89 ± 0.7 ms 1.03 ± 0.29
linalg/dagger/N=256 (block 256)/solve (A\b via lu) 8.1 ± 0.92 ms 14.4 ± 2.1 ms 0.563 ± 0.1
linalg/dagger/N=256 (block 256)/svd 0.545 ± 0.0043 s 0.548 ± 0.011 s 0.995 ± 0.021
linalg/dagger/N=256 (block 256)/syrk (A'*A) 3.25 ± 0.87 ms 3.67 ± 2.3 ms 0.886 ± 0.6
sparse/dagger/N=1024 (block 64)/cg solve (laplacian) 0.881 ± 0.038 s 0.921 ± 0.014 s 0.956 ± 0.044
sparse/dagger/N=1024 (block 64)/spgemm (S*S) 0.536 ± 0.0067 s 0.54 ± 0.0096 s 0.992 ± 0.022
sparse/dagger/N=1024 (block 64)/spmv (S*x) 0.0582 ± 0.0015 s 0.0552 ± 0.0054 s 1.06 ± 0.11
sparse/dagger/N=256 (block 16)/cg solve (laplacian) 0.939 ± 0.023 s 0.937 ± 0.042 s 1 ± 0.052
sparse/dagger/N=256 (block 16)/spgemm (S*S) 0.548 ± 0.023 s 0.529 ± 0.013 s 1.04 ± 0.051
sparse/dagger/N=256 (block 16)/spmv (S*x) 0.053 ± 0.0044 s 0.0494 ± 0.0092 s 1.07 ± 0.22
stencil/dagger/N=1024 (block 128)/alloc (neighbors Wrap) 18.6 ± 0.78 ms 18 ± 0.56 ms 1.03 ± 0.054
stencil/dagger/N=1024 (block 128)/assign (const) 6.94 ± 1 ms 7.08 ± 0.73 ms 0.98 ± 0.17
stencil/dagger/N=1024 (block 128)/multi-expr 17.3 ± 1.2 ms 18.3 ± 2.6 ms 0.946 ± 0.15
stencil/dagger/N=1024 (block 128)/neighbors (Clamp) 13.3 ± 0.11 ms 13.7 ± 0.36 ms 0.974 ± 0.027
stencil/dagger/N=1024 (block 128)/neighbors (Pad) 13.7 ± 1.2 ms 13.6 ± 0.67 ms 1.01 ± 0.1
stencil/dagger/N=1024 (block 128)/neighbors (Reflect) 13.2 ± 0.58 ms 13.3 ± 0.21 ms 0.993 ± 0.047
stencil/dagger/N=1024 (block 128)/neighbors (Wrap) 14.6 ± 4.6 ms 14.1 ± 0.7 ms 1.04 ± 0.33
stencil/dagger/N=1024 (block 128)/update (+) 9.42 ± 0.71 ms 9.36 ± 0.1 ms 1.01 ± 0.077
stencil/dagger/N=1024 (block 512)/alloc (neighbors Wrap) 7 ± 3.4 ms 7.21 ± 0.62 ms 0.97 ± 0.47
stencil/dagger/N=1024 (block 512)/assign (const) 1.03 ± 0.25 ms 1.05 ± 0.4 ms 0.983 ± 0.44
stencil/dagger/N=1024 (block 512)/multi-expr 2.68 ± 0.71 ms 4.02 ± 1.5 ms 0.667 ± 0.31
stencil/dagger/N=1024 (block 512)/neighbors (Clamp) 6.13 ± 0.57 ms 6.74 ± 0.95 ms 0.909 ± 0.15
stencil/dagger/N=1024 (block 512)/neighbors (Pad) 5.75 ± 0.6 ms 6.02 ± 0.13 ms 0.956 ± 0.1
stencil/dagger/N=1024 (block 512)/neighbors (Reflect) 5.66 ± 0.074 ms 6.25 ± 2.2 ms 0.905 ± 0.32
stencil/dagger/N=1024 (block 512)/neighbors (Wrap) 6.01 ± 0.48 ms 6.05 ± 1.9 ms 0.993 ± 0.32
stencil/dagger/N=1024 (block 512)/update (+) 1.55 ± 0.64 ms 3.82 ± 3.5 ms 0.406 ± 0.4
stencil/dagger/N=256 (block 128)/alloc (neighbors Wrap) 3.45 ± 0.81 ms 2.27 ± 2.3 ms 1.52 ± 1.6
stencil/dagger/N=256 (block 128)/assign (const) 2.08 ± 3.4 ms 1.51 ± 0.6 ms 1.37 ± 2.3
stencil/dagger/N=256 (block 128)/multi-expr 1.71 ± 0.88 ms 4.05 ± 2.3 ms 0.422 ± 0.32
stencil/dagger/N=256 (block 128)/neighbors (Clamp) 1.55 ± 0.51 ms 3.07 ± 1.9 ms 0.505 ± 0.36
stencil/dagger/N=256 (block 128)/neighbors (Pad) 2.88 ± 1.3 ms 3.15 ± 1.1 ms 0.915 ± 0.53
stencil/dagger/N=256 (block 128)/neighbors (Reflect) 2.17 ± 0.45 ms 2.4 ± 0.97 ms 0.905 ± 0.41
stencil/dagger/N=256 (block 128)/neighbors (Wrap) 1.94 ± 1.7 ms 1.87 ± 1.2 ms 1.04 ± 1.2
stencil/dagger/N=256 (block 128)/update (+) 2.82 ± 2.1 ms 1.79 ± 2 ms 1.57 ± 2.1
stencil/dagger/N=256 (block 256)/alloc (neighbors Wrap) 2.54 ± 0.9 ms 1.66 ± 0.77 ms 1.53 ± 0.9
stencil/dagger/N=256 (block 256)/assign (const) 0.493 ± 0.039 ms 0.503 ± 0.035 ms 0.98 ± 0.1
stencil/dagger/N=256 (block 256)/multi-expr 2.48 ± 2.4 ms 2.75 ± 2.5 ms 0.902 ± 1.2
stencil/dagger/N=256 (block 256)/neighbors (Clamp) 1.48 ± 0.044 ms 1.48 ± 0.14 ms 1 ± 0.1
stencil/dagger/N=256 (block 256)/neighbors (Pad) 1.34 ± 0.09 ms 1.56 ± 1.2 ms 0.858 ± 0.65
stencil/dagger/N=256 (block 256)/neighbors (Reflect) 1.57 ± 0.35 ms 1.58 ± 0.3 ms 0.992 ± 0.29
stencil/dagger/N=256 (block 256)/neighbors (Wrap) 1.34 ± 0.11 ms 1.62 ± 0.16 ms 0.826 ± 0.11
stencil/dagger/N=256 (block 256)/update (+) 1.09 ± 0.37 ms 0.714 ± 0.16 ms 1.52 ± 0.62
time_to_load 1.1 ± 0.0088 s 1.1 ± 0.012 s 1 ± 0.014

Allocations / memory

master dirty master / dirty
array/dagger/N=1024 (block 128)/add (X + X) 0.0794 M allocs: 11 MB 0.0793 M allocs: 11 MB 1
array/dagger/N=1024 (block 128)/alloc (rand) 0.0431 M allocs: 9.44 MB 0.0431 M allocs: 9.44 MB 1
array/dagger/N=1024 (block 128)/broadcast (X .+ 1) 0.038 M allocs: 9.31 MB 0.0382 M allocs: 9.3 MB 1
array/dagger/N=1024 (block 128)/map (sin.(X)) 0.033 M allocs: 9.11 MB 0.0329 M allocs: 9.11 MB 1
array/dagger/N=1024 (block 128)/norm 0.0424 M allocs: 1.41 MB 0.0424 M allocs: 1.41 MB 1
array/dagger/N=1024 (block 128)/reduce (sum) 0.0864 M allocs: 2.94 MB 0.0829 M allocs: 2.82 MB 1.04
array/dagger/N=1024 (block 128)/transpose (permutedims) 0.0448 M allocs: 9.73 MB 0.0447 M allocs: 9.73 MB 1
array/dagger/N=1024 (block 512)/add (X + X) 5.56 k allocs: 8.22 MB 5.59 k allocs: 8.22 MB 1
array/dagger/N=1024 (block 512)/alloc (rand) 2.76 k allocs: 8.09 MB 2.77 k allocs: 8.09 MB 1
array/dagger/N=1024 (block 512)/broadcast (X .+ 1) 2.41 k allocs: 8.08 MB 2.39 k allocs: 8.08 MB 1
array/dagger/N=1024 (block 512)/map (sin.(X)) 2.09 k allocs: 8.07 MB 2.1 k allocs: 8.07 MB 1
array/dagger/N=1024 (block 512)/norm 2.72 k allocs: 0.0905 MB 2.7 k allocs: 0.0902 MB 1
array/dagger/N=1024 (block 512)/reduce (sum) 4.56 k allocs: 0.157 MB 3.68 k allocs: 0.126 MB 1.25
array/dagger/N=1024 (block 512)/transpose (permutedims) 3.33 k allocs: 8.14 MB 3.31 k allocs: 8.14 MB 1
array/dagger/N=256 (block 128)/add (X + X) 5.57 k allocs: 0.717 MB 5.59 k allocs: 0.718 MB 0.999
array/dagger/N=256 (block 128)/alloc (rand) 2.75 k allocs: 0.592 MB 2.77 k allocs: 0.593 MB 0.999
array/dagger/N=256 (block 128)/broadcast (X .+ 1) 2.41 k allocs: 0.584 MB 2.43 k allocs: 0.583 MB 1
array/dagger/N=256 (block 128)/map (sin.(X)) 2.16 k allocs: 0.573 MB 2.08 k allocs: 0.57 MB 1
array/dagger/N=256 (block 128)/norm 2.69 k allocs: 0.0896 MB 2.69 k allocs: 0.0896 MB 1
array/dagger/N=256 (block 128)/reduce (sum) 4.14 k allocs: 0.142 MB 4.09 k allocs: 0.14 MB 1.01
array/dagger/N=256 (block 128)/transpose (permutedims) 3.35 k allocs: 0.637 MB 3.35 k allocs: 0.637 MB 1
array/dagger/N=256 (block 256)/add (X + X) 1.72 k allocs: 0.575 MB 1.73 k allocs: 0.575 MB 1
array/dagger/N=256 (block 256)/alloc (rand) 0.743 k allocs: 0.525 MB 0.754 k allocs: 0.526 MB 0.999
array/dagger/N=256 (block 256)/broadcast (X .+ 1) 0.651 k allocs: 0.522 MB 0.651 k allocs: 0.522 MB 1
array/dagger/N=256 (block 256)/map (sin.(X)) 0.574 k allocs: 0.52 MB 0.574 k allocs: 0.52 MB 1
array/dagger/N=256 (block 256)/norm 0.704 k allocs: 24.2 kB 0.713 k allocs: 24.6 kB 0.986
array/dagger/N=256 (block 256)/reduce (sum) 0.816 k allocs: 30.5 kB 0.816 k allocs: 30.5 kB 1
array/dagger/N=256 (block 256)/transpose (permutedims) 1.11 k allocs: 0.551 MB 1.11 k allocs: 0.551 MB 1
linalg/dagger/N=1024 (block 128)/cholesky 0.124 M allocs: 15.9 MB 0.124 M allocs: 15.9 MB 0.999
linalg/dagger/N=1024 (block 128)/lu 0.319 M allocs: 23.8 MB 0.347 M allocs: 24.8 MB 0.959
linalg/dagger/N=1024 (block 128)/matmul (A*A) 0.239 M allocs: 15.9 MB 0.237 M allocs: 15.8 MB 1
linalg/dagger/N=1024 (block 128)/matvec (A*x) 0.0667 M allocs: 2.48 MB 0.0694 M allocs: 2.58 MB 0.964
linalg/dagger/N=1024 (block 128)/qr 0.241 M allocs: 25.2 MB 0.242 M allocs: 25 MB 1.01
linalg/dagger/N=1024 (block 128)/solve (A\b via lu) 0.431 M allocs: 28.1 MB 0.452 M allocs: 28.8 MB 0.978
linalg/dagger/N=1024 (block 128)/svd 3.19 M allocs: 2.29 GB 3.07 M allocs: 2.29 GB 1
linalg/dagger/N=1024 (block 128)/syrk (A'*A) 0.173 M allocs: 17.1 MB 0.173 M allocs: 17 MB 1
linalg/dagger/N=1024 (block 512)/cholesky 7.93 k allocs: 10.3 MB 7.86 k allocs: 10.3 MB 1
linalg/dagger/N=1024 (block 512)/lu 15.6 k allocs: 14.6 MB 15.7 k allocs: 14.6 MB 1
linalg/dagger/N=1024 (block 512)/matmul (A*A) 7.72 k allocs: 8.29 MB 7.71 k allocs: 8.28 MB 1
linalg/dagger/N=1024 (block 512)/matvec (A*x) 6.1 k allocs: 0.243 MB 6.3 k allocs: 0.25 MB 0.972
linalg/dagger/N=1024 (block 512)/qr 11.6 k allocs: 9.6 MB 11.8 k allocs: 9.6 MB 0.999
linalg/dagger/N=1024 (block 512)/solve (A\b via lu) 30.1 k allocs: 15.2 MB 29.6 k allocs: 15.2 MB 1
linalg/dagger/N=1024 (block 512)/svd 0.0497 M allocs: 0.197 GB 0.0494 M allocs: 0.197 GB 1
linalg/dagger/N=1024 (block 512)/syrk (A'*A) 9.1 k allocs: 20.4 MB 9.08 k allocs: 20.4 MB 1
linalg/dagger/N=256 (block 128)/cholesky 7.86 k allocs: 0.937 MB 7.92 k allocs: 0.939 MB 0.998
linalg/dagger/N=256 (block 128)/lu 15.6 k allocs: 1.49 MB 15.6 k allocs: 1.49 MB 1
linalg/dagger/N=256 (block 128)/matmul (A*A) 7.74 k allocs: 0.787 MB 7.77 k allocs: 0.788 MB 0.999
linalg/dagger/N=256 (block 128)/matvec (A*x) 6.42 k allocs: 0.249 MB 6.4 k allocs: 0.248 MB 1
linalg/dagger/N=256 (block 128)/qr 11.6 k allocs: 1.24 MB 11.6 k allocs: 1.24 MB 1
linalg/dagger/N=256 (block 128)/solve (A\b via lu) 29.8 k allocs: 2.07 MB 30.5 k allocs: 2.09 MB 0.989
linalg/dagger/N=256 (block 128)/svd 0.0487 M allocs: 14.6 MB 0.0485 M allocs: 14.6 MB 1
linalg/dagger/N=256 (block 128)/syrk (A'*A) 9.11 k allocs: 1.61 MB 9.12 k allocs: 1.61 MB 1
linalg/dagger/N=256 (block 256)/cholesky 3.06 k allocs: 0.635 MB 3.06 k allocs: 0.635 MB 1
linalg/dagger/N=256 (block 256)/lu 5.4 k allocs: 1.24 MB 5.4 k allocs: 1.24 MB 1
linalg/dagger/N=256 (block 256)/matmul (A*A) 1.94 k allocs: 0.582 MB 1.94 k allocs: 0.582 MB 1
linalg/dagger/N=256 (block 256)/matvec (A*x) 2.45 k allocs: 0.104 MB 2.35 k allocs: 0.0995 MB 1.05
linalg/dagger/N=256 (block 256)/qr 3.46 k allocs: 0.78 MB 3.43 k allocs: 0.779 MB 1
linalg/dagger/N=256 (block 256)/solve (A\b via lu) 12 k allocs: 1.54 MB 11.9 k allocs: 1.53 MB 1
linalg/dagger/N=256 (block 256)/svd 15.5 k allocs: 6.71 MB 15.5 k allocs: 6.71 MB 1
linalg/dagger/N=256 (block 256)/syrk (A'*A) 3.07 k allocs: 2.14 MB 3.06 k allocs: 2.14 MB 1
sparse/dagger/N=1024 (block 64)/cg solve (laplacian) 3.1 M allocs: 0.114 GB 3.36 M allocs: 0.123 GB 0.927
sparse/dagger/N=1024 (block 64)/spgemm (S*S) 3.89 M allocs: 0.175 GB 4 M allocs: 0.179 GB 0.975
sparse/dagger/N=1024 (block 64)/spmv (S*x) 0.212 M allocs: 7.96 MB 0.234 M allocs: 8.74 MB 0.911
sparse/dagger/N=256 (block 16)/cg solve (laplacian) 3.12 M allocs: 0.115 GB 3.32 M allocs: 0.122 GB 0.946
sparse/dagger/N=256 (block 16)/spgemm (S*S) 4 M allocs: 0.142 GB 4.01 M allocs: 0.142 GB 0.996
sparse/dagger/N=256 (block 16)/spmv (S*x) 0.195 M allocs: 7.43 MB 0.218 M allocs: 8.18 MB 0.908
stencil/dagger/N=1024 (block 128)/alloc (neighbors Wrap) 0.0653 M allocs: 10.7 MB 0.0651 M allocs: 10.7 MB 1
stencil/dagger/N=1024 (block 128)/assign (const) 25.3 k allocs: 1.05 MB 25.3 k allocs: 1.05 MB 1
stencil/dagger/N=1024 (block 128)/multi-expr 0.0586 M allocs: 2.62 MB 0.058 M allocs: 2.59 MB 1.01
stencil/dagger/N=1024 (block 128)/neighbors (Clamp) 0.0487 M allocs: 2.51 MB 0.0488 M allocs: 2.64 MB 0.949
stencil/dagger/N=1024 (block 128)/neighbors (Pad) 0.0483 M allocs: 2.6 MB 0.048 M allocs: 2.49 MB 1.04
stencil/dagger/N=1024 (block 128)/neighbors (Reflect) 0.0489 M allocs: 2.55 MB 0.0488 M allocs: 2.67 MB 0.956
stencil/dagger/N=1024 (block 128)/neighbors (Wrap) 0.0475 M allocs: 2.26 MB 0.0473 M allocs: 2.25 MB 1
stencil/dagger/N=1024 (block 128)/update (+) 0.0328 M allocs: 1.55 MB 0.0332 M allocs: 1.56 MB 0.995
stencil/dagger/N=1024 (block 512)/alloc (neighbors Wrap) 4.82 k allocs: 8.2 MB 4.82 k allocs: 8.2 MB 1
stencil/dagger/N=1024 (block 512)/assign (const) 2.19 k allocs: 0.0955 MB 2.19 k allocs: 0.0956 MB 0.999
stencil/dagger/N=1024 (block 512)/multi-expr 4.98 k allocs: 2.22 MB 4.8 k allocs: 0.212 MB 10.5
stencil/dagger/N=1024 (block 512)/neighbors (Clamp) 3.84 k allocs: 0.233 MB 3.84 k allocs: 0.233 MB 0.998
stencil/dagger/N=1024 (block 512)/neighbors (Pad) 3.71 k allocs: 0.229 MB 3.71 k allocs: 0.23 MB 0.998
stencil/dagger/N=1024 (block 512)/neighbors (Reflect) 3.84 k allocs: 0.264 MB 3.88 k allocs: 0.266 MB 0.994
stencil/dagger/N=1024 (block 512)/neighbors (Wrap) 3.64 k allocs: 0.167 MB 3.61 k allocs: 0.166 MB 1.01
stencil/dagger/N=1024 (block 512)/update (+) 2.6 k allocs: 0.115 MB 2.61 k allocs: 0.116 MB 0.994
stencil/dagger/N=256 (block 128)/alloc (neighbors Wrap) 4.83 k allocs: 0.706 MB 4.81 k allocs: 0.705 MB 1
stencil/dagger/N=256 (block 128)/assign (const) 2.14 k allocs: 0.0937 MB 2.19 k allocs: 0.096 MB 0.975
stencil/dagger/N=256 (block 128)/multi-expr 4.81 k allocs: 0.213 MB 4.8 k allocs: 0.212 MB 1.01
stencil/dagger/N=256 (block 128)/neighbors (Clamp) 3.81 k allocs: 0.186 MB 3.88 k allocs: 0.313 MB 0.594
stencil/dagger/N=256 (block 128)/neighbors (Pad) 3.7 k allocs: 0.183 MB 3.71 k allocs: 0.183 MB 0.999
stencil/dagger/N=256 (block 128)/neighbors (Reflect) 3.78 k allocs: 0.193 MB 3.82 k allocs: 0.194 MB 0.994
stencil/dagger/N=256 (block 128)/neighbors (Wrap) 3.68 k allocs: 0.169 MB 3.61 k allocs: 0.167 MB 1.01
stencil/dagger/N=256 (block 128)/update (+) 2.62 k allocs: 0.116 MB 2.65 k allocs: 0.118 MB 0.986
stencil/dagger/N=256 (block 256)/alloc (neighbors Wrap) 1.56 k allocs: 0.574 MB 1.55 k allocs: 0.574 MB 1
stencil/dagger/N=256 (block 256)/assign (const) 0.811 k allocs: 0.041 MB 0.811 k allocs: 0.041 MB 1
stencil/dagger/N=256 (block 256)/multi-expr 1.74 k allocs: 0.0874 MB 1.72 k allocs: 0.087 MB 1
stencil/dagger/N=256 (block 256)/neighbors (Clamp) 1.26 k allocs: 0.0715 MB 1.26 k allocs: 0.0715 MB 1
stencil/dagger/N=256 (block 256)/neighbors (Pad) 1.21 k allocs: 0.0703 MB 1.21 k allocs: 0.0703 MB 1
stencil/dagger/N=256 (block 256)/neighbors (Reflect) 1.27 k allocs: 0.0796 MB 1.26 k allocs: 0.0792 MB 1
stencil/dagger/N=256 (block 256)/neighbors (Wrap) 1.2 k allocs: 0.0625 MB 1.2 k allocs: 0.0625 MB 1
stencil/dagger/N=256 (block 256)/update (+) 0.902 k allocs: 0.0456 MB 0.924 k allocs: 0.0463 MB 0.985
time_to_load 0.147 k allocs: 10.8 kB 0.147 k allocs: 10.8 kB 1

Plots

⚠️ Regressions (time > 25.0% and outside the reported ±spread; allocs/memory > 25.0%)

  • linalg/dagger/N=256 (block 256)/solve (A\b via lu) (time): +77.7%
  • stencil/dagger/N=256 (block 128)/neighbors (Clamp) (memory): +68.4%

Improvements

  • stencil/dagger/N=1024 (block 512)/multi-expr (memory): -90.4%
  • linalg/dagger/N=256 (block 256)/cholesky (time): -60.9%
  • array/dagger/N=256 (block 128)/map (sin.(X)) (time): -44.9%
Within noise (20 metric(s) past threshold but inside the ±spread; not counted)
  • stencil/dagger/N=1024 (block 512)/update (+) (time): 146.6%
  • stencil/dagger/N=256 (block 128)/multi-expr (time): 136.7%
  • array/dagger/N=256 (block 128)/broadcast (X .+ 1) (time): 114.7%
  • array/dagger/N=1024 (block 512)/alloc (rand) (time): 99.0%
  • stencil/dagger/N=256 (block 128)/neighbors (Clamp) (time): 98.1%
  • linalg/dagger/N=256 (block 128)/lu (time): 83.7%
  • linalg/dagger/N=256 (block 128)/matmul (A*A) (time): 69.6%
  • stencil/dagger/N=1024 (block 512)/multi-expr (time): 50.0%
  • linalg/dagger/N=256 (block 128)/syrk (A'*A) (time): 42.7%
  • array/dagger/N=256 (block 128)/reduce (sum) (time): 30.9%
  • array/dagger/N=256 (block 256)/broadcast (X .+ 1) (time): -26.6%
  • stencil/dagger/N=256 (block 128)/assign (const) (time): -27.2%
  • linalg/dagger/N=256 (block 128)/matvec (A*x) (time): -28.0%
  • array/dagger/N=256 (block 256)/add (X + X) (time): -32.0%
  • stencil/dagger/N=256 (block 128)/alloc (neighbors Wrap) (time): -34.1%
  • stencil/dagger/N=256 (block 256)/update (+) (time): -34.2%
  • stencil/dagger/N=256 (block 256)/alloc (neighbors Wrap) (time): -34.8%
  • linalg/dagger/N=1024 (block 512)/matvec (A*x) (time): -35.0%
  • stencil/dagger/N=256 (block 128)/update (+) (time): -36.3%
  • array/dagger/N=1024 (block 512)/norm (time): -40.7%
Distributed benchmarks (4 processes)

Dagger benchmarks: dirty vs master

Median time

master dirty master / dirty
array/dagger/N=1024 (block 128)/add (X + X) 0.206 ± 0.057 s 0.313 ± 0.047 s 0.657 ± 0.21
array/dagger/N=1024 (block 128)/alloc (rand) 20.8 ± 1.3 ms 23 ± 1.8 ms 0.907 ± 0.09
array/dagger/N=1024 (block 128)/broadcast (X .+ 1) 0.0327 ± 0.0013 s 0.0337 ± 0.0017 s 0.97 ± 0.061
array/dagger/N=1024 (block 128)/map (sin.(X)) 0.0384 ± 0.002 s 0.0389 ± 0.00071 s 0.988 ± 0.055
array/dagger/N=1024 (block 128)/norm 20 ± 1.4 ms 25.1 ± 1.5 ms 0.796 ± 0.073
array/dagger/N=1024 (block 128)/reduce (sum) 0.0507 ± 0.0027 s 0.0476 ± 0.0022 s 1.07 ± 0.075
array/dagger/N=1024 (block 128)/transpose (permutedims) 0.0447 ± 0.0031 s 0.0719 ± 0.0072 s 0.622 ± 0.075
array/dagger/N=1024 (block 512)/add (X + X) 27.8 ± 9.5 ms 23.7 ± 11 ms 1.17 ± 0.66
array/dagger/N=1024 (block 512)/alloc (rand) 2.78 ± 0.16 ms 3.46 ± 1.3 ms 0.804 ± 0.3
array/dagger/N=1024 (block 512)/broadcast (X .+ 1) 4.12 ± 0.54 ms 4.51 ± 0.3 ms 0.915 ± 0.13
array/dagger/N=1024 (block 512)/map (sin.(X)) 7.27 ± 1.5 ms 7.12 ± 1.7 ms 1.02 ± 0.31
array/dagger/N=1024 (block 512)/norm 1.84 ± 0.26 ms 2.37 ± 0.05 ms 0.774 ± 0.11
array/dagger/N=1024 (block 512)/reduce (sum) 3.32 ± 0.16 ms 3.34 ± 0.38 ms 0.992 ± 0.12
array/dagger/N=1024 (block 512)/transpose (permutedims) 12.2 ± 52 ms 10.7 ± 51 ms 1.14 ± 7.3
array/dagger/N=256 (block 128)/add (X + X) 1.53 ± 0.12 ms 1.58 ± 0.1 ms 0.971 ± 0.096
array/dagger/N=256 (block 128)/alloc (rand) 1.44 ± 0.029 ms 1.47 ± 0.033 ms 0.978 ± 0.03
array/dagger/N=256 (block 128)/broadcast (X .+ 1) 2.61 ± 0.2 ms 2.47 ± 0.35 ms 1.06 ± 0.17
array/dagger/N=256 (block 128)/map (sin.(X)) 1.85 ± 0.37 ms 1.95 ± 0.67 ms 0.947 ± 0.38
array/dagger/N=256 (block 128)/norm 0.787 ± 0.67 ms 0.807 ± 0.65 ms 0.975 ± 1.1
array/dagger/N=256 (block 128)/reduce (sum) 2.93 ± 6 ms 15.2 ± 35 ms 0.193 ± 0.59
array/dagger/N=256 (block 128)/transpose (permutedims) 1.11 ± 0.033 ms 1.15 ± 0.052 ms 0.963 ± 0.052
array/dagger/N=256 (block 256)/add (X + X) 0.906 ± 0.12 ms 0.877 ± 0.076 ms 1.03 ± 0.16
array/dagger/N=256 (block 256)/alloc (rand) 0.899 ± 0.023 ms 0.972 ± 0.055 ms 0.924 ± 0.057
array/dagger/N=256 (block 256)/broadcast (X .+ 1) 0.515 ± 0.13 ms 0.48 ± 0.039 ms 1.07 ± 0.29
array/dagger/N=256 (block 256)/map (sin.(X)) 1 ± 0.034 ms 1.05 ± 0.076 ms 0.957 ± 0.077
array/dagger/N=256 (block 256)/norm 0.397 ± 0.059 ms 0.382 ± 0.015 ms 1.04 ± 0.16
array/dagger/N=256 (block 256)/reduce (sum) 0.546 ± 0.032 ms 0.607 ± 0.022 ms 0.899 ± 0.062
array/dagger/N=256 (block 256)/transpose (permutedims) 0.779 ± 0.04 ms 0.835 ± 0.026 ms 0.932 ± 0.056
linalg/dagger/N=1024 (block 128)/cholesky 0.49 ± 0.051 s 0.476 ± 0.013 s 1.03 ± 0.11
linalg/dagger/N=1024 (block 128)/lu 0.223 ± 0.0045 s 0.243 ± 0.0017 s 0.918 ± 0.019
linalg/dagger/N=1024 (block 128)/matmul (A*A) 0.43 ± 0.055 s 0.488 ± 0.036 s 0.881 ± 0.13
linalg/dagger/N=1024 (block 128)/matvec (A*x) 0.117 ± 0.0081 s 0.124 ± 0.0027 s 0.946 ± 0.069
linalg/dagger/N=1024 (block 128)/qr 8.58 s 0.31 ± 0.0058 s 27.7
linalg/dagger/N=1024 (block 128)/solve (A\b via lu) 0.304 ± 0.02 s 0.308 ± 0.02 s 0.986 ± 0.09
linalg/dagger/N=1024 (block 128)/svd 0.0174 h 54.1 s 1.16
linalg/dagger/N=1024 (block 128)/syrk (A'*A) 0.369 ± 0.029 s 0.335 ± 0.068 s 1.1 ± 0.24
linalg/dagger/N=1024 (block 512)/cholesky 0.0983 ± 0.026 s 0.0656 ± 0.046 s 1.5 ± 1.1
linalg/dagger/N=1024 (block 512)/lu 0.0404 ± 0.00069 s 0.043 ± 0.00056 s 0.939 ± 0.02
linalg/dagger/N=1024 (block 512)/matmul (A*A) 0.0628 ± 0.0092 s 0.059 ± 0.015 s 1.06 ± 0.31
linalg/dagger/N=1024 (block 512)/matvec (A*x) 9.83 ± 0.57 ms 9.89 ± 0.13 ms 0.993 ± 0.059
linalg/dagger/N=1024 (block 512)/qr 0.104 ± 0.0037 s 0.102 ± 0.0013 s 1.02 ± 0.039
linalg/dagger/N=1024 (block 512)/solve (A\b via lu) 0.0546 ± 0.0011 s 0.0554 ± 0.00061 s 0.986 ± 0.022
linalg/dagger/N=1024 (block 512)/svd 0.04 h 0.0397 h 1.01
linalg/dagger/N=1024 (block 512)/syrk (A'*A) 0.0328 ± 0.00026 s 0.0616 ± 0.0092 s 0.532 ± 0.079
linalg/dagger/N=256 (block 128)/cholesky 3.43 ± 2.4e+02 ms 3.88 ± 2.1e+02 ms 0.885 ± 78
linalg/dagger/N=256 (block 128)/lu 14.4 ± 3.1e+02 ms 0.349 ± 0.33 s 0.0413 ± 0.89
linalg/dagger/N=256 (block 128)/matmul (A*A) 4.82 ± 0.08 ms 5.2 ± 0.045 ms 0.927 ± 0.017
linalg/dagger/N=256 (block 128)/matvec (A*x) 5.51 ± 2.6 ms 1.88 ± 2 ms 2.93 ± 3.4
linalg/dagger/N=256 (block 128)/qr 7.47 ± 0.23 ms 7.67 ± 0.36 ms 0.974 ± 0.055
linalg/dagger/N=256 (block 128)/solve (A\b via lu) 0.143 ± 0.12 s 0.512 ± 0.38 s 0.279 ± 0.31
linalg/dagger/N=256 (block 128)/svd 0.478 ± 0.0084 s 0.626 ± 0.2 s 0.762 ± 0.24
linalg/dagger/N=256 (block 128)/syrk (A'*A) 4.95 ± 0.65 ms 5.15 ± 0.44 ms 0.961 ± 0.15
linalg/dagger/N=256 (block 256)/cholesky 1.87 ± 0.23 ms 1.89 ± 0.25 ms 0.985 ± 0.18
linalg/dagger/N=256 (block 256)/lu 2.92 ± 0.13 ms 3.01 ± 0.12 ms 0.971 ± 0.058
linalg/dagger/N=256 (block 256)/matmul (A*A) 1.51 ± 0.22 ms 1.95 ± 0.095 ms 0.772 ± 0.12
linalg/dagger/N=256 (block 256)/matvec (A*x) 0.969 ± 0.044 ms 0.989 ± 0.013 ms 0.98 ± 0.047
linalg/dagger/N=256 (block 256)/qr 3.76 ± 0.0095 ms 3.96 ± 0.32 ms 0.95 ± 0.077
linalg/dagger/N=256 (block 256)/solve (A\b via lu) 4.91 ± 0.022 ms 5.22 ± 0.35 ms 0.939 ± 0.062
linalg/dagger/N=256 (block 256)/svd 0.277 ± 0.0029 s 0.384 ± 0.014 s 0.721 ± 0.028
linalg/dagger/N=256 (block 256)/syrk (A'*A) 2.31 ± 0.018 ms 2.78 ± 0.1 ms 0.831 ± 0.031
sparse/dagger/N=1024 (block 64)/cg solve (laplacian) 11 s 11.6 s 0.952
sparse/dagger/N=1024 (block 64)/spgemm (S*S) 6.53 s 6.26 s 1.04
sparse/dagger/N=1024 (block 64)/spmv (S*x) 0.686 ± 0.028 s 0.736 ± 0.025 s 0.933 ± 0.049
sparse/dagger/N=256 (block 16)/cg solve (laplacian) 11.5 s 11.2 s 1.03
sparse/dagger/N=256 (block 16)/spgemm (S*S) 6.37 s 6.27 s 1.02
sparse/dagger/N=256 (block 16)/spmv (S*x) 0.677 ± 0.0077 s 0.698 ± 0.014 s 0.969 ± 0.023
stencil/dagger/N=1024 (block 128)/assign (const) 10.3 ± 8.7 ms 9.23 ± 11 ms 1.12 ± 1.7
stencil/dagger/N=1024 (block 128)/multi-expr 0.262 ± 0.0077 s 0.302 ± 0.019 s 0.867 ± 0.061
stencil/dagger/N=1024 (block 128)/update (+) 0.266 ± 0.024 s 0.286 ± 0.014 s 0.93 ± 0.096
stencil/dagger/N=1024 (block 512)/alloc (neighbors Wrap) 27.4 ± 6.7 ms
stencil/dagger/N=1024 (block 512)/assign (const) 1.15 ± 3.6 ms 5.71 ± 3.9 ms 0.201 ± 0.64
stencil/dagger/N=1024 (block 512)/multi-expr 0.0462 ± 0.022 s 2.91 ± 4.8 ms 15.8 ± 27
stencil/dagger/N=1024 (block 512)/neighbors (Clamp) 28 ± 11 ms 15.8 ± 4.7 ms 1.77 ± 0.87
stencil/dagger/N=1024 (block 512)/update (+) 1.92 ± 0.049 ms 22.9 ± 13 ms 0.084 ± 0.046
stencil/dagger/N=256 (block 128)/alloc (neighbors Wrap) 2.88 ± 0.079 ms 2.86 ± 0.09 ms 1.01 ± 0.042
stencil/dagger/N=256 (block 128)/assign (const) 0.847 ± 0.016 ms 0.962 ± 0.058 ms 0.88 ± 0.055
stencil/dagger/N=256 (block 128)/multi-expr 1.79 ± 0.082 ms 1.79 ± 0.078 ms 1 ± 0.064
stencil/dagger/N=256 (block 128)/neighbors (Clamp) 2.86 ± 0.42 ms 2.53 ± 0.033 ms 1.13 ± 0.17
stencil/dagger/N=256 (block 128)/neighbors (Pad) 2.14 ± 0.065 ms 1.94 ± 0.014 ms 1.1 ± 0.034
stencil/dagger/N=256 (block 128)/neighbors (Reflect) 1.91 ± 0.025 ms 2.07 ± 0.12 ms 0.921 ± 0.054
stencil/dagger/N=256 (block 128)/update (+) 1.58 ± 0.045 ms 1.58 ± 0.042 ms 0.999 ± 0.039
stencil/dagger/N=256 (block 256)/alloc (neighbors Wrap) 1.64 ± 0.014 ms 1.82 ± 0.045 ms 0.902 ± 0.024
stencil/dagger/N=256 (block 256)/assign (const) 0.574 ± 0.057 ms 0.582 ± 0.023 ms 0.988 ± 0.11
stencil/dagger/N=256 (block 256)/multi-expr 1.18 ± 0.045 ms 1.26 ± 0.19 ms 0.935 ± 0.14
stencil/dagger/N=256 (block 256)/neighbors (Clamp) 1.5 ± 0.071 ms 1.81 ± 0.045 ms 0.83 ± 0.045
stencil/dagger/N=256 (block 256)/neighbors (Pad) 1.39 ± 0.033 ms 1.45 ± 0.14 ms 0.96 ± 0.097
stencil/dagger/N=256 (block 256)/neighbors (Reflect) 1.34 ± 0.0074 ms 1.54 ± 0.013 ms 0.87 ± 0.0086
stencil/dagger/N=256 (block 256)/update (+) 0.883 ± 0.13 ms 1.05 ± 0.00082 ms 0.838 ± 0.13
time_to_load 1.19 ± 0.0033 s 1.21 ± 0.0073 s 0.989 ± 0.0066

Allocations / memory

master dirty master / dirty
array/dagger/N=1024 (block 128)/add (X + X) 0.34 M allocs: 26.4 MB 0.489 M allocs: 0.033 GB 0.783
array/dagger/N=1024 (block 128)/alloc (rand) 0.0523 M allocs: 6.72 MB 0.0563 M allocs: 5.46 MB 1.23
array/dagger/N=1024 (block 128)/broadcast (X .+ 1) 0.0866 M allocs: 7.95 MB 0.0916 M allocs: 7.42 MB 1.07
array/dagger/N=1024 (block 128)/map (sin.(X)) 0.0816 M allocs: 7.1 MB 0.0848 M allocs: 7.27 MB 0.975
array/dagger/N=1024 (block 128)/norm 0.0549 M allocs: 2.08 MB 0.0635 M allocs: 2.51 MB 0.828
array/dagger/N=1024 (block 128)/reduce (sum) 0.108 M allocs: 4.29 MB 0.104 M allocs: 4.13 MB 1.04
array/dagger/N=1024 (block 128)/transpose (permutedims) 0.0974 M allocs: 9.96 MB 0.127 M allocs: 10.5 MB 0.952
array/dagger/N=1024 (block 512)/add (X + X) 13.6 k allocs: 10.6 MB 13.6 k allocs: 10.6 MB 1
array/dagger/N=1024 (block 512)/alloc (rand) 3.42 k allocs: 2.17 MB 3.4 k allocs: 4.15 MB 0.524
array/dagger/N=1024 (block 512)/broadcast (X .+ 1) 4.26 k allocs: 2.22 MB 4.06 k allocs: 2.31 MB 0.962
array/dagger/N=1024 (block 512)/map (sin.(X)) 4.71 k allocs: 2.2 MB 4.6 k allocs: 2.2 MB 0.999
array/dagger/N=1024 (block 512)/norm 3.65 k allocs: 0.136 MB 3.77 k allocs: 0.141 MB 0.961
array/dagger/N=1024 (block 512)/reduce (sum) 5.44 k allocs: 0.21 MB 4.86 k allocs: 0.178 MB 1.18
array/dagger/N=1024 (block 512)/transpose (permutedims) 9.55 k allocs: 2.55 MB 9.26 k allocs: 4.41 MB 0.579
array/dagger/N=256 (block 128)/add (X + X) 6.2 k allocs: 0.741 MB 6.21 k allocs: 0.741 MB 1
array/dagger/N=256 (block 128)/alloc (rand) 2.83 k allocs: 0.595 MB 2.83 k allocs: 0.595 MB 1
array/dagger/N=256 (block 128)/broadcast (X .+ 1) 4.93 k allocs: 0.345 MB 4.65 k allocs: 0.345 MB 0.999
array/dagger/N=256 (block 128)/map (sin.(X)) 2.33 k allocs: 0.536 MB 2.71 k allocs: 0.554 MB 0.967
array/dagger/N=256 (block 128)/norm 2.7 k allocs: 0.0886 MB 2.7 k allocs: 0.0886 MB 1
array/dagger/N=256 (block 128)/reduce (sum) 5.12 k allocs: 0.194 MB 5.18 k allocs: 0.196 MB 0.989
array/dagger/N=256 (block 128)/transpose (permutedims) 3.58 k allocs: 0.647 MB 3.58 k allocs: 0.647 MB 1
array/dagger/N=256 (block 256)/add (X + X) 2.04 k allocs: 0.591 MB 2.04 k allocs: 0.591 MB 1
array/dagger/N=256 (block 256)/alloc (rand) 0.853 k allocs: 0.53 MB 0.854 k allocs: 0.53 MB 1
array/dagger/N=256 (block 256)/broadcast (X .+ 1) 0.649 k allocs: 0.522 MB 0.649 k allocs: 0.522 MB 1
array/dagger/N=256 (block 256)/map (sin.(X)) 0.571 k allocs: 0.519 MB 0.571 k allocs: 0.519 MB 1
array/dagger/N=256 (block 256)/norm 0.712 k allocs: 24.2 kB 0.712 k allocs: 24.2 kB 1
array/dagger/N=256 (block 256)/reduce (sum) 0.814 k allocs: 30.2 kB 0.814 k allocs: 30.2 kB 1
array/dagger/N=256 (block 256)/transpose (permutedims) 1.32 k allocs: 0.563 MB 1.32 k allocs: 0.563 MB 1
linalg/dagger/N=1024 (block 128)/cholesky 0.744 M allocs: 0.0502 GB 0.729 M allocs: 0.0493 GB 1.02
linalg/dagger/N=1024 (block 128)/lu 0.691 M allocs: 0.0437 GB 0.671 M allocs: 0.0442 GB 0.989
linalg/dagger/N=1024 (block 128)/matmul (A*A) 0.871 M allocs: 0.0587 GB 0.871 M allocs: 0.0598 GB 0.982
linalg/dagger/N=1024 (block 128)/matvec (A*x) 0.232 M allocs: 13 MB 0.239 M allocs: 13.8 MB 0.939
linalg/dagger/N=1024 (block 128)/qr 0.581 M allocs: 0.0473 GB 0.451 M allocs: 0.0397 GB 1.19
linalg/dagger/N=1024 (block 128)/solve (A\b via lu) 0.853 M allocs: 0.0482 GB 0.823 M allocs: 0.0475 GB 1.01
linalg/dagger/N=1024 (block 128)/svd 21 M allocs: 2.73 GB 21.7 M allocs: 2.74 GB 0.996
linalg/dagger/N=1024 (block 128)/syrk (A'*A) 0.728 M allocs: 0.0579 GB 0.594 M allocs: 0.0445 GB 1.3
linalg/dagger/N=1024 (block 512)/cholesky 0.0378 M allocs: 13.6 MB 9.95 k allocs: 10.4 MB 1.31
linalg/dagger/N=1024 (block 512)/lu 20.3 k allocs: 14.8 MB 19.9 k allocs: 14.8 MB 1
linalg/dagger/N=1024 (block 512)/matmul (A*A) 20.6 k allocs: 16.8 MB 11.1 k allocs: 8.41 MB 2
linalg/dagger/N=1024 (block 512)/matvec (A*x) 17.3 k allocs: 0.725 MB 17.2 k allocs: 0.722 MB 1
linalg/dagger/N=1024 (block 512)/qr 14.2 k allocs: 9.7 MB 14.2 k allocs: 9.7 MB 1
linalg/dagger/N=1024 (block 512)/solve (A\b via lu) 0.0469 M allocs: 15.9 MB 0.0465 M allocs: 15.9 MB 1
linalg/dagger/N=1024 (block 512)/svd 0.22 M allocs: 0.334 GB 0.22 M allocs: 0.334 GB 1
linalg/dagger/N=1024 (block 512)/syrk (A'*A) 12.1 k allocs: 20.5 MB 12 k allocs: 20.5 MB 1
linalg/dagger/N=256 (block 128)/cholesky 9.99 k allocs: 1.01 MB 9.95 k allocs: 1.01 MB 1
linalg/dagger/N=256 (block 128)/lu 29.5 k allocs: 2.07 MB 29.4 k allocs: 2.07 MB 1
linalg/dagger/N=256 (block 128)/matmul (A*A) 11.7 k allocs: 0.928 MB 11.5 k allocs: 0.92 MB 1.01
linalg/dagger/N=256 (block 128)/matvec (A*x) 7.13 k allocs: 0.276 MB 7.13 k allocs: 0.276 MB 1
linalg/dagger/N=256 (block 128)/qr 14.1 k allocs: 1.34 MB 14 k allocs: 1.33 MB 1
linalg/dagger/N=256 (block 128)/solve (A\b via lu) 0.0761 M allocs: 4.08 MB 0.0762 M allocs: 4.08 MB 1
linalg/dagger/N=256 (block 128)/svd 0.212 M allocs: 30 MB 0.213 M allocs: 30 MB 1
linalg/dagger/N=256 (block 128)/syrk (A'*A) 12.1 k allocs: 1.71 MB 11.9 k allocs: 1.71 MB 1
linalg/dagger/N=256 (block 256)/cholesky 3.55 k allocs: 0.662 MB 3.55 k allocs: 0.662 MB 1
linalg/dagger/N=256 (block 256)/lu 6.45 k allocs: 1.29 MB 6.45 k allocs: 1.29 MB 1
linalg/dagger/N=256 (block 256)/matmul (A*A) 2.26 k allocs: 0.598 MB 2.26 k allocs: 0.598 MB 1
linalg/dagger/N=256 (block 256)/matvec (A*x) 2.81 k allocs: 0.123 MB 2.81 k allocs: 0.123 MB 1
linalg/dagger/N=256 (block 256)/qr 4.04 k allocs: 0.811 MB 4.04 k allocs: 0.811 MB 1
linalg/dagger/N=256 (block 256)/solve (A\b via lu) 14.2 k allocs: 1.65 MB 14.2 k allocs: 1.65 MB 1
linalg/dagger/N=256 (block 256)/svd 18.3 k allocs: 6.86 MB 18.3 k allocs: 6.86 MB 1
linalg/dagger/N=256 (block 256)/syrk (A'*A) 3.6 k allocs: 2.16 MB 3.6 k allocs: 2.16 MB 1
sparse/dagger/N=1024 (block 64)/cg solve (laplacian) 19 M allocs: 0.812 GB 19.9 M allocs: 0.845 GB 0.96
sparse/dagger/N=1024 (block 64)/spgemm (S*S) 13.2 M allocs: 0.592 GB 13 M allocs: 0.58 GB 1.02
sparse/dagger/N=1024 (block 64)/spmv (S*x) 1.22 M allocs: 0.0511 GB 1.28 M allocs: 0.0536 GB 0.954
sparse/dagger/N=256 (block 16)/cg solve (laplacian) 20 M allocs: 0.848 GB 18.6 M allocs: 0.793 GB 1.07
sparse/dagger/N=256 (block 16)/spgemm (S*S) 12.8 M allocs: 0.541 GB 12.9 M allocs: 0.541 GB 1
sparse/dagger/N=256 (block 16)/spmv (S*x) 1.26 M allocs: 0.0521 GB 1.26 M allocs: 0.0524 GB 0.995
stencil/dagger/N=1024 (block 128)/assign (const) 0.0326 M allocs: 1.46 MB 0.0326 M allocs: 1.46 MB 1
stencil/dagger/N=1024 (block 128)/multi-expr 0.437 M allocs: 0.0325 GB 0.465 M allocs: 28.6 MB 1.16
stencil/dagger/N=1024 (block 128)/update (+) 0.382 M allocs: 24.3 MB 0.415 M allocs: 21.6 MB 1.12
stencil/dagger/N=1024 (block 512)/alloc (neighbors Wrap) 6.32 k allocs: 8.26 MB
stencil/dagger/N=1024 (block 512)/assign (const) 2.58 k allocs: 0.113 MB 2.52 k allocs: 0.111 MB 1.02
stencil/dagger/N=1024 (block 512)/multi-expr 21.5 k allocs: 7.83 MB 6.64 k allocs: 0.285 MB 27.4
stencil/dagger/N=1024 (block 512)/neighbors (Clamp) 13.9 k allocs: 6.65 MB 5.23 k allocs: 0.288 MB 23.1
stencil/dagger/N=1024 (block 512)/update (+) 3.44 k allocs: 0.15 MB 3.44 k allocs: 0.15 MB 1
stencil/dagger/N=256 (block 128)/alloc (neighbors Wrap) 6.31 k allocs: 0.764 MB 6.3 k allocs: 0.764 MB 1
stencil/dagger/N=256 (block 128)/assign (const) 2.45 k allocs: 0.108 MB 2.51 k allocs: 0.11 MB 0.975
stencil/dagger/N=256 (block 128)/multi-expr 6.43 k allocs: 0.278 MB 6.46 k allocs: 0.279 MB 0.995
stencil/dagger/N=256 (block 128)/neighbors (Clamp) 5.64 k allocs: 0.263 MB 5.59 k allocs: 0.261 MB 1.01
stencil/dagger/N=256 (block 128)/neighbors (Pad) 5.04 k allocs: 0.237 MB 5.05 k allocs: 0.237 MB 0.999
stencil/dagger/N=256 (block 128)/neighbors (Reflect) 5.15 k allocs: 0.249 MB 5.16 k allocs: 0.249 MB 0.998
stencil/dagger/N=256 (block 128)/update (+) 3.85 k allocs: 0.17 MB 3.93 k allocs: 0.175 MB 0.973
stencil/dagger/N=256 (block 256)/alloc (neighbors Wrap) 2.13 k allocs: 0.601 MB 2.14 k allocs: 0.602 MB 1
stencil/dagger/N=256 (block 256)/assign (const) 1.09 k allocs: 0.0561 MB 1.09 k allocs: 0.0561 MB 0.999
stencil/dagger/N=256 (block 256)/multi-expr 2.59 k allocs: 0.628 MB 2.59 k allocs: 0.628 MB 1
stencil/dagger/N=256 (block 256)/neighbors (Clamp) 1.84 k allocs: 0.598 MB 1.9 k allocs: 0.601 MB 0.995
stencil/dagger/N=256 (block 256)/neighbors (Pad) 1.79 k allocs: 0.596 MB 1.79 k allocs: 0.596 MB 1
stencil/dagger/N=256 (block 256)/neighbors (Reflect) 1.84 k allocs: 0.606 MB 1.94 k allocs: 0.61 MB 0.993
stencil/dagger/N=256 (block 256)/update (+) 1.42 k allocs: 0.57 MB 1.36 k allocs: 0.567 MB 1
time_to_load 0.147 k allocs: 10.8 kB 0.147 k allocs: 10.8 kB 1

⚠️ Regressions (time > 35.0% and outside the reported ±spread; allocs/memory > 25.0%)

  • stencil/dagger/N=1024 (block 512)/update (+) (time): +1090.3%
  • array/dagger/N=1024 (block 512)/alloc (rand) (memory): +90.8%
  • linalg/dagger/N=1024 (block 512)/syrk (A'*A) (time): +88.1%
  • array/dagger/N=1024 (block 512)/transpose (permutedims) (memory): +72.8%
  • array/dagger/N=1024 (block 128)/transpose (permutedims) (time): +60.9%
  • array/dagger/N=1024 (block 128)/add (X + X) (time): +52.2%
  • array/dagger/N=1024 (block 128)/add (X + X) (allocs): +43.8%
  • linalg/dagger/N=256 (block 256)/svd (time): +38.6%
  • array/dagger/N=1024 (block 128)/transpose (permutedims) (allocs): +30.3%
  • array/dagger/N=1024 (block 128)/add (X + X) (memory): +27.8%

Improvements

  • linalg/dagger/N=1024 (block 128)/qr (time): -96.4%
  • stencil/dagger/N=1024 (block 512)/multi-expr (memory): -96.4%
  • stencil/dagger/N=1024 (block 512)/neighbors (Clamp) (memory): -95.7%
  • stencil/dagger/N=1024 (block 512)/multi-expr (time): -93.7%
  • linalg/dagger/N=1024 (block 512)/cholesky (allocs): -73.7%
  • stencil/dagger/N=1024 (block 512)/multi-expr (allocs): -69.2%
  • stencil/dagger/N=1024 (block 512)/neighbors (Clamp) (allocs): -62.5%
  • linalg/dagger/N=1024 (block 512)/matmul (A*A) (memory): -50.0%
  • linalg/dagger/N=1024 (block 512)/matmul (A*A) (allocs): -45.9%
Within noise (6 metric(s) past threshold but inside the ±spread; not counted)
  • linalg/dagger/N=256 (block 128)/lu (time): 2319.8%
  • array/dagger/N=256 (block 128)/reduce (sum) (time): 418.8%
  • stencil/dagger/N=1024 (block 512)/assign (const) (time): 396.4%
  • linalg/dagger/N=256 (block 128)/solve (A\b via lu) (time): 258.7%
  • stencil/dagger/N=1024 (block 512)/neighbors (Clamp) (time): -43.5%
  • linalg/dagger/N=256 (block 128)/matvec (A*x) (time): -65.8%
MPI benchmarks (4 ranks)

Results unavailable (job did not produce a report).

Full results and plots (download the benchmark-results-* artifacts).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant