Skip to content

Support CUDA 6 - #755

Merged
jpsamaroo merged 1 commit into
masterfrom
jps/cuda-6
Sep 15, 2026
Merged

jpsamaroo merged 1 commit into
masterfrom
jps/cuda-6

Conversation

@jpsamaroo

Copy link
Copy Markdown
Member

No description provided.

@jpsamaroo jpsamaroo added the gpu label Sep 15, 2026
@github-actions

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) 17 ± 4.7 ms 16.9 ± 4.1 ms 1.01 ± 0.37
array/dagger/N=1024 (block 128)/alloc (rand) 6.19 ± 0.22 ms 6.6 ± 0.31 ms 0.938 ± 0.054
array/dagger/N=1024 (block 128)/broadcast (X .+ 1) 8.36 ± 1.7 ms 5.56 ± 0.28 ms 1.5 ± 0.31
array/dagger/N=1024 (block 128)/map (sin.(X)) 6.17 ± 1.7 ms 5.9 ± 0.27 ms 1.05 ± 0.29
array/dagger/N=1024 (block 128)/norm 6.67 ± 0.87 ms 7.04 ± 3.9 ms 0.947 ± 0.55
array/dagger/N=1024 (block 128)/reduce (sum) 13.2 ± 2 ms 14.1 ± 1.3 ms 0.936 ± 0.16
array/dagger/N=1024 (block 128)/transpose (permutedims) 8.04 ± 1.2 ms 7.18 ± 4.5 ms 1.12 ± 0.72
array/dagger/N=1024 (block 512)/add (X + X) 2.73 ± 0.48 ms 3.71 ± 1.2 ms 0.736 ± 0.26
array/dagger/N=1024 (block 512)/alloc (rand) 1.44 ± 0.45 ms 1.26 ± 1.1 ms 1.14 ± 1
array/dagger/N=1024 (block 512)/broadcast (X .+ 1) 1.45 ± 0.26 ms 4.21 ± 2.9 ms 0.344 ± 0.24
array/dagger/N=1024 (block 512)/map (sin.(X)) 4.11 ± 0.62 ms 4.09 ± 0.75 ms 1.01 ± 0.24
array/dagger/N=1024 (block 512)/norm 1.52 ± 1.3 ms 0.902 ± 1.2 ms 1.69 ± 2.6
array/dagger/N=1024 (block 512)/reduce (sum) 1.12 ± 0.079 ms 1.99 ± 1.3 ms 0.562 ± 0.36
array/dagger/N=1024 (block 512)/transpose (permutedims) 3.16 ± 0.65 ms 3.41 ± 0.84 ms 0.927 ± 0.3
array/dagger/N=256 (block 128)/add (X + X) 1.98 ± 0.74 ms 2.3 ± 1.4 ms 0.863 ± 0.63
array/dagger/N=256 (block 128)/alloc (rand) 1.63 ± 0.98 ms 0.926 ± 0.27 ms 1.76 ± 1.2
array/dagger/N=256 (block 128)/broadcast (X .+ 1) 0.72 ± 0.26 ms 0.896 ± 0.17 ms 0.804 ± 0.33
array/dagger/N=256 (block 128)/map (sin.(X)) 0.566 ± 0.0036 ms 0.827 ± 0.37 ms 0.685 ± 0.31
array/dagger/N=256 (block 128)/norm 0.817 ± 0.26 ms 0.616 ± 0.11 ms 1.33 ± 0.48
array/dagger/N=256 (block 128)/reduce (sum) 1.39 ± 0.99 ms 2.02 ± 0.56 ms 0.688 ± 0.53
array/dagger/N=256 (block 128)/transpose (permutedims) 0.946 ± 0.86 ms 1.52 ± 0.51 ms 0.623 ± 0.61
array/dagger/N=256 (block 256)/add (X + X) 0.744 ± 0.092 ms 0.706 ± 0.057 ms 1.05 ± 0.16
array/dagger/N=256 (block 256)/alloc (rand) 0.552 ± 0.03 ms 0.571 ± 0.032 ms 0.967 ± 0.075
array/dagger/N=256 (block 256)/broadcast (X .+ 1) 0.291 ± 0.075 ms 0.39 ± 0.2 ms 0.745 ± 0.44
array/dagger/N=256 (block 256)/map (sin.(X)) 0.688 ± 0.024 ms 0.807 ± 0.089 ms 0.852 ± 0.099
array/dagger/N=256 (block 256)/norm 0.283 ± 0.089 ms 0.439 ± 0.064 ms 0.643 ± 0.22
array/dagger/N=256 (block 256)/reduce (sum) 0.425 ± 0.035 ms 0.504 ± 0.18 ms 0.844 ± 0.32
array/dagger/N=256 (block 256)/transpose (permutedims) 0.625 ± 0.058 ms 0.625 ± 0.037 ms 1 ± 0.11
linalg/dagger/N=1024 (block 128)/cholesky 0.0449 ± 0.0018 s 0.0422 ± 0.02 s 1.06 ± 0.5
linalg/dagger/N=1024 (block 128)/lu 0.0862 ± 0.0042 s 0.0777 ± 0.0099 s 1.11 ± 0.15
linalg/dagger/N=1024 (block 128)/matmul (A*A) 0.097 ± 0.0077 s 0.111 ± 0.0087 s 0.878 ± 0.098
linalg/dagger/N=1024 (block 128)/matvec (A*x) 7.29 ± 1 ms 7.5 ± 0.88 ms 0.971 ± 0.18
linalg/dagger/N=1024 (block 128)/qr 0.0828 ± 0.022 s 0.103 ± 0.0027 s 0.806 ± 0.21
linalg/dagger/N=1024 (block 128)/solve (A\b via lu) 0.118 ± 0.0039 s 0.118 ± 0.021 s 1 ± 0.19
linalg/dagger/N=1024 (block 128)/svd 25.8 s 24.8 s 1.04
linalg/dagger/N=1024 (block 128)/syrk (A'*A) 0.0599 ± 0.01 s 0.0621 ± 0.017 s 0.964 ± 0.31
linalg/dagger/N=1024 (block 512)/cholesky 15.5 ± 2.4 ms 15.1 ± 1.5 ms 1.03 ± 0.19
linalg/dagger/N=1024 (block 512)/lu 28.7 ± 0.68 ms 27.9 ± 0.63 ms 1.03 ± 0.034
linalg/dagger/N=1024 (block 512)/matmul (A*A) 27.9 ± 11 ms 22.9 ± 0.68 ms 1.22 ± 0.47
linalg/dagger/N=1024 (block 512)/matvec (A*x) 1.55 ± 0.079 ms 2.3 ± 0.75 ms 0.676 ± 0.22
linalg/dagger/N=1024 (block 512)/qr 0.056 ± 0.0064 s 0.0534 ± 0.0011 s 1.05 ± 0.12
linalg/dagger/N=1024 (block 512)/solve (A\b via lu) 30 ± 5.1 ms 0.034 ± 0.0063 s 0.882 ± 0.22
linalg/dagger/N=1024 (block 512)/svd 0.02 h 0.0202 h 0.993
linalg/dagger/N=1024 (block 512)/syrk (A'*A) 22.4 ± 3.1 ms 20.2 ± 2.6 ms 1.11 ± 0.21
linalg/dagger/N=256 (block 128)/cholesky 5.46 ± 2.3 ms 5.81 ± 3.4 ms 0.939 ± 0.67
linalg/dagger/N=256 (block 128)/lu 8.18 ± 2.8 ms 8.61 ± 4.4 ms 0.95 ± 0.58
linalg/dagger/N=256 (block 128)/matmul (A*A) 3.74 ± 3.4 ms 5.01 ± 4.4 ms 0.748 ± 0.95
linalg/dagger/N=256 (block 128)/matvec (A*x) 2.28 ± 0.8 ms 3.91 ± 0.99 ms 0.584 ± 0.25
linalg/dagger/N=256 (block 128)/qr 7.05 ± 2.1 ms 6.63 ± 0.96 ms 1.06 ± 0.35
linalg/dagger/N=256 (block 128)/solve (A\b via lu) 20.1 ± 10 ms 15 ± 1.2 ms 1.34 ± 0.69
linalg/dagger/N=256 (block 128)/svd 0.608 ± 0.012 s 0.584 ± 0.013 s 1.04 ± 0.031
linalg/dagger/N=256 (block 128)/syrk (A'*A) 7 ± 1.2 ms 7.39 ± 3.6 ms 0.947 ± 0.49
linalg/dagger/N=256 (block 256)/cholesky 1.66 ± 0.63 ms 1.44 ± 0.14 ms 1.15 ± 0.45
linalg/dagger/N=256 (block 256)/lu 2.65 ± 0.48 ms 2.73 ± 1.3 ms 0.971 ± 0.49
linalg/dagger/N=256 (block 256)/matmul (A*A) 1.21 ± 0.016 ms 1.37 ± 0.049 ms 0.882 ± 0.034
linalg/dagger/N=256 (block 256)/matvec (A*x) 0.634 ± 0.98 ms 0.664 ± 0.051 ms 0.953 ± 1.5
linalg/dagger/N=256 (block 256)/qr 3.09 ± 0.21 ms 2.92 ± 0.14 ms 1.06 ± 0.088
linalg/dagger/N=256 (block 256)/solve (A\b via lu) 4.63 ± 0.25 ms 5.98 ± 3.9 ms 0.774 ± 0.51
linalg/dagger/N=256 (block 256)/svd 0.517 ± 0.004 s 0.518 ± 0.012 s 0.998 ± 0.024
linalg/dagger/N=256 (block 256)/syrk (A'*A) 2.26 ± 0.24 ms 1.95 ± 0.04 ms 1.15 ± 0.13
sparse/dagger/N=1024 (block 64)/cg solve (laplacian) 0.244 ± 0.013 s 0.239 ± 0.012 s 1.02 ± 0.073
sparse/dagger/N=1024 (block 64)/spgemm (S*S) 0.2 ± 0.013 s 0.191 ± 0.015 s 1.05 ± 0.11
sparse/dagger/N=1024 (block 64)/spmv (S*x) 15.1 ± 2 ms 14.2 ± 3.4 ms 1.07 ± 0.29
sparse/dagger/N=256 (block 16)/cg solve (laplacian) 0.226 ± 0.011 s 0.236 ± 0.03 s 0.956 ± 0.13
sparse/dagger/N=256 (block 16)/spgemm (S*S) 0.194 ± 0.029 s 0.19 ± 0.013 s 1.02 ± 0.17
sparse/dagger/N=256 (block 16)/spmv (S*x) 13.6 ± 0.67 ms 16.6 ± 1.9 ms 0.82 ± 0.1
stencil/dagger/N=1024 (block 128)/alloc (neighbors Wrap) 19.2 ± 1.2 ms 18.4 ± 1 ms 1.04 ± 0.089
stencil/dagger/N=1024 (block 128)/assign (const) 5.86 ± 1.2 ms 6.23 ± 0.6 ms 0.94 ± 0.21
stencil/dagger/N=1024 (block 128)/multi-expr 13.5 ± 1.5 ms 14.2 ± 0.85 ms 0.954 ± 0.12
stencil/dagger/N=1024 (block 128)/neighbors (Clamp) 12.5 ± 0.51 ms 13.2 ± 0.89 ms 0.943 ± 0.074
stencil/dagger/N=1024 (block 128)/neighbors (Pad) 11.7 ± 0.44 ms 12.5 ± 0.42 ms 0.938 ± 0.047
stencil/dagger/N=1024 (block 128)/neighbors (Reflect) 12.6 ± 0.46 ms 13.1 ± 0.44 ms 0.959 ± 0.048
stencil/dagger/N=1024 (block 128)/neighbors (Wrap) 11.6 ± 0.37 ms 12.7 ± 0.15 ms 0.915 ± 0.031
stencil/dagger/N=1024 (block 128)/update (+) 7.19 ± 0.53 ms 7.66 ± 0.84 ms 0.939 ± 0.12
stencil/dagger/N=1024 (block 512)/alloc (neighbors Wrap) 5.17 ± 1.1 ms 4.66 ± 0.51 ms 1.11 ± 0.26
stencil/dagger/N=1024 (block 512)/assign (const) 2.03 ± 1.8 ms 0.959 ± 0.061 ms 2.12 ± 1.9
stencil/dagger/N=1024 (block 512)/multi-expr 3.65 ± 0.42 ms 2.56 ± 0.56 ms 1.43 ± 0.35
stencil/dagger/N=1024 (block 512)/neighbors (Clamp) 5.1 ± 2.4 ms 4.56 ± 0.95 ms 1.12 ± 0.57
stencil/dagger/N=1024 (block 512)/neighbors (Pad) 5.04 ± 0.59 ms 4.59 ± 0.8 ms 1.1 ± 0.23
stencil/dagger/N=1024 (block 512)/neighbors (Reflect) 5.39 ± 2 ms 6.42 ± 2 ms 0.84 ± 0.4
stencil/dagger/N=1024 (block 512)/neighbors (Wrap) 3.48 ± 0.65 ms 4.39 ± 0.97 ms 0.794 ± 0.23
stencil/dagger/N=1024 (block 512)/update (+) 1.84 ± 2 ms 2.07 ± 0.94 ms 0.889 ± 1
stencil/dagger/N=256 (block 128)/alloc (neighbors Wrap) 2.18 ± 0.62 ms 2.05 ± 1.2 ms 1.07 ± 0.71
stencil/dagger/N=256 (block 128)/assign (const) 1.07 ± 0.18 ms 1.6 ± 0.34 ms 0.672 ± 0.18
stencil/dagger/N=256 (block 128)/multi-expr 2.16 ± 2.6 ms 3.4 ± 1.9 ms 0.636 ± 0.85
stencil/dagger/N=256 (block 128)/neighbors (Clamp) 3.09 ± 1.7 ms 1.56 ± 1.6 ms 1.99 ± 2.4
stencil/dagger/N=256 (block 128)/neighbors (Pad) 4.02 ± 3.8 ms 1.57 ± 0.64 ms 2.56 ± 2.6
stencil/dagger/N=256 (block 128)/neighbors (Reflect) 3.31 ± 0.91 ms 1.85 ± 0.43 ms 1.79 ± 0.64
stencil/dagger/N=256 (block 128)/neighbors (Wrap) 1.51 ± 0.68 ms 2.07 ± 0.57 ms 0.73 ± 0.39
stencil/dagger/N=256 (block 128)/update (+) 0.865 ± 0.18 ms 0.776 ± 0.034 ms 1.12 ± 0.24
stencil/dagger/N=256 (block 256)/alloc (neighbors Wrap) 1.25 ± 0.16 ms 1.27 ± 0.13 ms 0.988 ± 0.16
stencil/dagger/N=256 (block 256)/assign (const) 0.542 ± 0.04 ms 0.586 ± 0.037 ms 0.926 ± 0.09
stencil/dagger/N=256 (block 256)/multi-expr 0.885 ± 0.52 ms 0.9 ± 0.35 ms 0.984 ± 0.7
stencil/dagger/N=256 (block 256)/neighbors (Clamp) 1.02 ± 0.085 ms 0.956 ± 0.024 ms 1.06 ± 0.093
stencil/dagger/N=256 (block 256)/neighbors (Pad) 0.985 ± 0.15 ms 0.957 ± 0.07 ms 1.03 ± 0.17
stencil/dagger/N=256 (block 256)/neighbors (Reflect) 1.03 ± 0.12 ms 1.04 ± 0.14 ms 0.984 ± 0.18
stencil/dagger/N=256 (block 256)/neighbors (Wrap) 1.05 ± 0.099 ms 1.01 ± 0.15 ms 1.04 ± 0.18
stencil/dagger/N=256 (block 256)/update (+) 0.522 ± 0.028 ms 0.486 ± 0.064 ms 1.07 ± 0.15
time_to_load 0.639 ± 0.023 s 0.664 ± 0.0076 s 0.963 ± 0.036

Allocations / memory

master dirty master / dirty
array/dagger/N=1024 (block 128)/add (X + X) 0.0769 M allocs: 11.1 MB 0.0763 M allocs: 11 MB 1
array/dagger/N=1024 (block 128)/alloc (rand) 29.7 k allocs: 9.05 MB 29.8 k allocs: 9.03 MB 1
array/dagger/N=1024 (block 128)/broadcast (X .+ 1) 28.4 k allocs: 9 MB 28.2 k allocs: 9 MB 1
array/dagger/N=1024 (block 128)/map (sin.(X)) 25.8 k allocs: 8.89 MB 25.7 k allocs: 8.89 MB 1
array/dagger/N=1024 (block 128)/norm 29.7 k allocs: 1.03 MB 29.6 k allocs: 1.02 MB 1
array/dagger/N=1024 (block 128)/reduce (sum) 0.0591 M allocs: 2.13 MB 0.0607 M allocs: 2.16 MB 0.984
array/dagger/N=1024 (block 128)/transpose (permutedims) 0.0349 M allocs: 9.43 MB 0.0353 M allocs: 9.45 MB 0.998
array/dagger/N=1024 (block 512)/add (X + X) 5.41 k allocs: 8.22 MB 5.43 k allocs: 8.22 MB 1
array/dagger/N=1024 (block 512)/alloc (rand) 1.97 k allocs: 8.07 MB 1.98 k allocs: 8.07 MB 1
array/dagger/N=1024 (block 512)/broadcast (X .+ 1) 1.76 k allocs: 8.06 MB 1.79 k allocs: 8.06 MB 1
array/dagger/N=1024 (block 512)/map (sin.(X)) 1.69 k allocs: 8.06 MB 1.68 k allocs: 8.06 MB 1
array/dagger/N=1024 (block 512)/norm 1.86 k allocs: 0.0645 MB 1.9 k allocs: 0.0656 MB 0.983
array/dagger/N=1024 (block 512)/reduce (sum) 3.49 k allocs: 0.125 MB 3.26 k allocs: 0.115 MB 1.08
array/dagger/N=1024 (block 512)/transpose (permutedims) 2.76 k allocs: 8.12 MB 2.73 k allocs: 8.12 MB 1
array/dagger/N=256 (block 128)/add (X + X) 5.47 k allocs: 0.722 MB 5.45 k allocs: 0.722 MB 1
array/dagger/N=256 (block 128)/alloc (rand) 1.95 k allocs: 0.568 MB 1.93 k allocs: 0.568 MB 1
array/dagger/N=256 (block 128)/broadcast (X .+ 1) 1.8 k allocs: 0.564 MB 1.84 k allocs: 0.565 MB 0.997
array/dagger/N=256 (block 128)/map (sin.(X)) 1.68 k allocs: 0.558 MB 1.68 k allocs: 0.558 MB 1
array/dagger/N=256 (block 128)/norm 1.92 k allocs: 0.0665 MB 1.89 k allocs: 0.0655 MB 1.02
array/dagger/N=256 (block 128)/reduce (sum) 3.46 k allocs: 0.123 MB 3.35 k allocs: 0.12 MB 1.02
array/dagger/N=256 (block 128)/transpose (permutedims) 2.79 k allocs: 0.621 MB 2.79 k allocs: 0.621 MB 1
array/dagger/N=256 (block 256)/add (X + X) 1.7 k allocs: 0.576 MB 1.7 k allocs: 0.576 MB 1
array/dagger/N=256 (block 256)/alloc (rand) 0.552 k allocs: 0.52 MB 0.552 k allocs: 0.52 MB 1
array/dagger/N=256 (block 256)/broadcast (X .+ 1) 0.492 k allocs: 0.518 MB 0.492 k allocs: 0.518 MB 1
array/dagger/N=256 (block 256)/map (sin.(X)) 0.472 k allocs: 0.517 MB 0.472 k allocs: 0.517 MB 1
array/dagger/N=256 (block 256)/norm 0.508 k allocs: 18.2 kB 0.519 k allocs: 18.5 kB 0.981
array/dagger/N=256 (block 256)/reduce (sum) 0.665 k allocs: 25.9 kB 0.669 k allocs: 26.2 kB 0.989
array/dagger/N=256 (block 256)/transpose (permutedims) 0.954 k allocs: 0.547 MB 0.976 k allocs: 0.548 MB 0.999
linalg/dagger/N=1024 (block 128)/cholesky 0.108 M allocs: 15.5 MB 0.108 M allocs: 15.5 MB 1
linalg/dagger/N=1024 (block 128)/lu 0.298 M allocs: 23.4 MB 0.294 M allocs: 23.3 MB 1
linalg/dagger/N=1024 (block 128)/matmul (A*A) 0.229 M allocs: 15.7 MB 0.232 M allocs: 16 MB 0.987
linalg/dagger/N=1024 (block 128)/matvec (A*x) 0.0426 M allocs: 1.73 MB 0.0428 M allocs: 1.76 MB 0.98
linalg/dagger/N=1024 (block 128)/qr 0.231 M allocs: 25.1 MB 0.227 M allocs: 25 MB 1.01
linalg/dagger/N=1024 (block 128)/solve (A\b via lu) 0.361 M allocs: 26 MB 0.366 M allocs: 26.2 MB 0.993
linalg/dagger/N=1024 (block 128)/svd 2.36 M allocs: 2.27 GB 3.03 M allocs: 2.3 GB 0.985
linalg/dagger/N=1024 (block 128)/syrk (A'*A) 0.167 M allocs: 17.1 MB 0.169 M allocs: 17.1 MB 0.997
linalg/dagger/N=1024 (block 512)/cholesky 6.87 k allocs: 10.3 MB 6.91 k allocs: 10.3 MB 1
linalg/dagger/N=1024 (block 512)/lu 14.7 k allocs: 14.6 MB 14.4 k allocs: 14.6 MB 1
linalg/dagger/N=1024 (block 512)/matmul (A*A) 7.16 k allocs: 8.28 MB 7.17 k allocs: 8.28 MB 1
linalg/dagger/N=1024 (block 512)/matvec (A*x) 4.03 k allocs: 0.176 MB 4.4 k allocs: 0.191 MB 0.917
linalg/dagger/N=1024 (block 512)/qr 11.5 k allocs: 9.61 MB 11.7 k allocs: 9.62 MB 0.999
linalg/dagger/N=1024 (block 512)/solve (A\b via lu) 24.2 k allocs: 15.1 MB 24.2 k allocs: 15.1 MB 1
linalg/dagger/N=1024 (block 512)/svd 0.0463 M allocs: 0.197 GB 0.0465 M allocs: 0.198 GB 0.999
linalg/dagger/N=1024 (block 512)/syrk (A'*A) 8.44 k allocs: 20.4 MB 8.54 k allocs: 20.4 MB 1
linalg/dagger/N=256 (block 128)/cholesky 6.91 k allocs: 0.912 MB 6.93 k allocs: 0.913 MB 0.999
linalg/dagger/N=256 (block 128)/lu 14.2 k allocs: 1.46 MB 14.3 k allocs: 1.46 MB 0.999
linalg/dagger/N=256 (block 128)/matmul (A*A) 7.14 k allocs: 0.777 MB 7.18 k allocs: 0.779 MB 0.998
linalg/dagger/N=256 (block 128)/matvec (A*x) 4.13 k allocs: 0.174 MB 4.35 k allocs: 0.183 MB 0.95
linalg/dagger/N=256 (block 128)/qr 11.5 k allocs: 1.25 MB 11.7 k allocs: 1.26 MB 0.996
linalg/dagger/N=256 (block 128)/solve (A\b via lu) 24.6 k allocs: 1.92 MB 24.6 k allocs: 1.92 MB 0.999
linalg/dagger/N=256 (block 128)/svd 0.0459 M allocs: 14.6 MB 0.0461 M allocs: 14.6 MB 1
linalg/dagger/N=256 (block 128)/syrk (A'*A) 8.43 k allocs: 1.6 MB 8.51 k allocs: 1.6 MB 0.998
linalg/dagger/N=256 (block 256)/cholesky 2.63 k allocs: 0.623 MB 2.61 k allocs: 0.622 MB 1
linalg/dagger/N=256 (block 256)/lu 4.89 k allocs: 1.23 MB 4.91 k allocs: 1.23 MB 0.999
linalg/dagger/N=256 (block 256)/matmul (A*A) 1.79 k allocs: 0.58 MB 1.8 k allocs: 0.58 MB 0.999
linalg/dagger/N=256 (block 256)/matvec (A*x) 1.75 k allocs: 0.0818 MB 1.74 k allocs: 0.0816 MB 1
linalg/dagger/N=256 (block 256)/qr 3.51 k allocs: 0.786 MB 3.47 k allocs: 0.785 MB 1
linalg/dagger/N=256 (block 256)/solve (A\b via lu) 10.1 k allocs: 1.48 MB 10 k allocs: 1.47 MB 1
linalg/dagger/N=256 (block 256)/svd 14.6 k allocs: 6.7 MB 14.6 k allocs: 6.7 MB 1
linalg/dagger/N=256 (block 256)/syrk (A'*A) 2.8 k allocs: 2.13 MB 2.79 k allocs: 2.13 MB 1
sparse/dagger/N=1024 (block 64)/cg solve (laplacian) 1.83 M allocs: 0.0723 GB 1.86 M allocs: 0.0734 GB 0.984
sparse/dagger/N=1024 (block 64)/spgemm (S*S) 2.46 M allocs: 0.131 GB 2.44 M allocs: 0.13 GB 1
sparse/dagger/N=1024 (block 64)/spmv (S*x) 0.129 M allocs: 5.15 MB 0.127 M allocs: 5.08 MB 1.01
sparse/dagger/N=256 (block 16)/cg solve (laplacian) 1.84 M allocs: 0.0724 GB 1.82 M allocs: 0.0716 GB 1.01
sparse/dagger/N=256 (block 16)/spgemm (S*S) 2.39 M allocs: 0.091 GB 2.47 M allocs: 0.0946 GB 0.962
sparse/dagger/N=256 (block 16)/spmv (S*x) 0.128 M allocs: 5.11 MB 0.129 M allocs: 5.14 MB 0.996
stencil/dagger/N=1024 (block 128)/alloc (neighbors Wrap) 0.0978 M allocs: 12 MB 0.097 M allocs: 12 MB 1
stencil/dagger/N=1024 (block 128)/assign (const) 0.0327 M allocs: 1.37 MB 0.0327 M allocs: 1.35 MB 1.02
stencil/dagger/N=1024 (block 128)/multi-expr 0.0748 M allocs: 3.2 MB 0.074 M allocs: 3.2 MB 1
stencil/dagger/N=1024 (block 128)/neighbors (Clamp) 0.0681 M allocs: 3.16 MB 0.0683 M allocs: 3.17 MB 0.997
stencil/dagger/N=1024 (block 128)/neighbors (Pad) 0.0677 M allocs: 3.14 MB 0.0677 M allocs: 3.17 MB 0.991
stencil/dagger/N=1024 (block 128)/neighbors (Reflect) 0.0683 M allocs: 3.22 MB 0.0687 M allocs: 3.35 MB 0.961
stencil/dagger/N=1024 (block 128)/neighbors (Wrap) 0.0677 M allocs: 3.08 MB 0.0674 M allocs: 2.94 MB 1.05
stencil/dagger/N=1024 (block 128)/update (+) 0.0419 M allocs: 1.81 MB 0.0414 M allocs: 1.79 MB 1.01
stencil/dagger/N=1024 (block 512)/alloc (neighbors Wrap) 6.86 k allocs: 8.29 MB 6.86 k allocs: 8.29 MB 1
stencil/dagger/N=1024 (block 512)/assign (const) 2.67 k allocs: 0.116 MB 2.65 k allocs: 0.115 MB 1
stencil/dagger/N=1024 (block 512)/multi-expr 5.91 k allocs: 0.259 MB 5.87 k allocs: 0.258 MB 1
stencil/dagger/N=1024 (block 512)/neighbors (Clamp) 5.05 k allocs: 0.281 MB 5.12 k allocs: 0.284 MB 0.991
stencil/dagger/N=1024 (block 512)/neighbors (Pad) 4.93 k allocs: 0.278 MB 4.92 k allocs: 0.277 MB 1
stencil/dagger/N=1024 (block 512)/neighbors (Reflect) 5.04 k allocs: 0.312 MB 5.07 k allocs: 0.315 MB 0.992
stencil/dagger/N=1024 (block 512)/neighbors (Wrap) 4.87 k allocs: 0.217 MB 4.92 k allocs: 0.219 MB 0.991
stencil/dagger/N=1024 (block 512)/update (+) 3.22 k allocs: 0.142 MB 3.21 k allocs: 0.141 MB 1.01
stencil/dagger/N=256 (block 128)/alloc (neighbors Wrap) 6.89 k allocs: 0.788 MB 6.87 k allocs: 0.787 MB 1
stencil/dagger/N=256 (block 128)/assign (const) 2.65 k allocs: 0.116 MB 2.65 k allocs: 0.115 MB 1
stencil/dagger/N=256 (block 128)/multi-expr 5.88 k allocs: 0.259 MB 5.88 k allocs: 0.258 MB 1
stencil/dagger/N=256 (block 128)/neighbors (Clamp) 5.04 k allocs: 0.235 MB 5.01 k allocs: 0.234 MB 1
stencil/dagger/N=256 (block 128)/neighbors (Pad) 4.94 k allocs: 0.232 MB 4.92 k allocs: 0.231 MB 1
stencil/dagger/N=256 (block 128)/neighbors (Reflect) 5.06 k allocs: 0.243 MB 5.01 k allocs: 0.243 MB 1
stencil/dagger/N=256 (block 128)/neighbors (Wrap) 4.92 k allocs: 0.219 MB 4.95 k allocs: 0.22 MB 0.995
stencil/dagger/N=256 (block 128)/update (+) 3.2 k allocs: 0.141 MB 3.24 k allocs: 0.267 MB 0.529
stencil/dagger/N=256 (block 256)/alloc (neighbors Wrap) 2.09 k allocs: 0.596 MB 2.1 k allocs: 0.597 MB 0.999
stencil/dagger/N=256 (block 256)/assign (const) 0.932 k allocs: 0.0465 MB 0.943 k allocs: 0.0468 MB 0.993
stencil/dagger/N=256 (block 256)/multi-expr 2 k allocs: 0.0994 MB 2.02 k allocs: 0.1 MB 0.99
stencil/dagger/N=256 (block 256)/neighbors (Clamp) 1.57 k allocs: 0.0847 MB 1.58 k allocs: 0.0849 MB 0.998
stencil/dagger/N=256 (block 256)/neighbors (Pad) 1.53 k allocs: 0.0835 MB 1.53 k allocs: 0.0833 MB 1
stencil/dagger/N=256 (block 256)/neighbors (Reflect) 1.59 k allocs: 0.093 MB 1.58 k allocs: 0.0926 MB 1
stencil/dagger/N=256 (block 256)/neighbors (Wrap) 1.52 k allocs: 0.076 MB 1.54 k allocs: 0.0771 MB 0.985
stencil/dagger/N=256 (block 256)/update (+) 1.07 k allocs: 0.053 MB 1.07 k allocs: 0.0528 MB 1.01
time_to_load 0.199 k allocs: 11.5 kB 0.199 k allocs: 11.5 kB 1

Plots

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

  • stencil/dagger/N=256 (block 128)/update (+) (memory): +89.0%
  • array/dagger/N=256 (block 256)/norm (time): +55.4%
  • stencil/dagger/N=256 (block 128)/assign (const) (time): +48.9%
  • linalg/dagger/N=1024 (block 128)/svd (allocs): +28.2%

Improvements

  • stencil/dagger/N=256 (block 128)/neighbors (Reflect) (time): -44.1%
  • array/dagger/N=1024 (block 128)/broadcast (X .+ 1) (time): -33.5%
  • stencil/dagger/N=1024 (block 512)/multi-expr (time): -29.9%
Within noise (20 metric(s) past threshold but inside the ±spread; not counted)
  • array/dagger/N=1024 (block 512)/broadcast (X .+ 1) (time): 190.6%
  • array/dagger/N=1024 (block 512)/reduce (sum) (time): 77.9%
  • linalg/dagger/N=256 (block 128)/matvec (A*x) (time): 71.2%
  • array/dagger/N=256 (block 128)/transpose (permutedims) (time): 60.5%
  • stencil/dagger/N=256 (block 128)/multi-expr (time): 57.1%
  • linalg/dagger/N=1024 (block 512)/matvec (A*x) (time): 48.0%
  • array/dagger/N=256 (block 128)/map (sin.(X)) (time): 46.0%
  • array/dagger/N=256 (block 128)/reduce (sum) (time): 45.3%
  • stencil/dagger/N=256 (block 128)/neighbors (Wrap) (time): 37.0%
  • array/dagger/N=1024 (block 512)/add (X + X) (time): 35.9%
  • array/dagger/N=256 (block 256)/broadcast (X .+ 1) (time): 34.2%
  • linalg/dagger/N=256 (block 128)/matmul (A*A) (time): 33.7%
  • linalg/dagger/N=256 (block 256)/solve (A\b via lu) (time): 29.2%
  • stencil/dagger/N=1024 (block 512)/neighbors (Wrap) (time): 25.9%
  • linalg/dagger/N=256 (block 128)/solve (A\b via lu) (time): -25.4%
  • array/dagger/N=1024 (block 512)/norm (time): -40.9%
  • array/dagger/N=256 (block 128)/alloc (rand) (time): -43.2%
  • stencil/dagger/N=256 (block 128)/neighbors (Clamp) (time): -49.7%
  • stencil/dagger/N=1024 (block 512)/assign (const) (time): -52.9%
  • stencil/dagger/N=256 (block 128)/neighbors (Pad) (time): -60.9%
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.0913 ± 0.005 s 0.0998 ± 0.035 s 0.914 ± 0.32
array/dagger/N=1024 (block 128)/alloc (rand) 30 ± 0.8 ms 29.4 ± 2.5 ms 1.02 ± 0.091
array/dagger/N=1024 (block 128)/broadcast (X .+ 1) 0.0356 ± 0.0035 s 0.0395 ± 0.0013 s 0.903 ± 0.093
array/dagger/N=1024 (block 128)/map (sin.(X)) 0.0367 ± 0.001 s 0.036 ± 0.0013 s 1.02 ± 0.046
array/dagger/N=1024 (block 128)/norm 0.0344 ± 0.0018 s 0.0328 ± 0.0026 s 1.05 ± 0.099
array/dagger/N=1024 (block 128)/reduce (sum) 0.0469 ± 0.0022 s 0.0543 ± 0.0013 s 0.864 ± 0.045
array/dagger/N=1024 (block 128)/transpose (permutedims) 0.0376 ± 0.009 s 0.0376 ± 0.0041 s 1 ± 0.26
array/dagger/N=1024 (block 512)/add (X + X) 12.6 ± 3.7 ms 3.43 ± 0.071 ms 3.68 ± 1.1
array/dagger/N=1024 (block 512)/alloc (rand) 3.45 ± 0.094 ms 2.25 ± 0.037 ms 1.53 ± 0.049
array/dagger/N=1024 (block 512)/broadcast (X .+ 1) 3.57 ± 0.48 ms 2.73 ± 0.57 ms 1.31 ± 0.33
array/dagger/N=1024 (block 512)/map (sin.(X)) 10.2 ± 2 ms 6.98 ± 0.71 ms 1.46 ± 0.33
array/dagger/N=1024 (block 512)/norm 0.048 ± 0.046 s 2.73 ± 0.15 ms 17.6 ± 17
array/dagger/N=1024 (block 512)/reduce (sum) 2.74 ± 0.91 ms 3.56 ± 18 ms 0.768 ± 4
array/dagger/N=1024 (block 512)/transpose (permutedims) 7.95 ± 0.55 ms 0.043 ± 0.073 s 0.185 ± 0.32
array/dagger/N=256 (block 128)/add (X + X) 1.8 ± 0.019 ms 1.8 ± 0.028 ms 1 ± 0.019
array/dagger/N=256 (block 128)/alloc (rand) 1.33 ± 0.019 ms 1.35 ± 0.032 ms 0.986 ± 0.027
array/dagger/N=256 (block 128)/broadcast (X .+ 1) 0.754 ± 0.0014 ms 0.765 ± 0.038 ms 0.985 ± 0.049
array/dagger/N=256 (block 128)/map (sin.(X)) 1.23 ± 0.019 ms 1.22 ± 0.021 ms 1 ± 0.023
array/dagger/N=256 (block 128)/norm 0.744 ± 0.016 ms 0.736 ± 0.0074 ms 1.01 ± 0.023
array/dagger/N=256 (block 128)/reduce (sum) 3.25 ± 60 ms 0.0332 ± 0.086 s 0.0978 ± 1.8
array/dagger/N=256 (block 128)/transpose (permutedims) 1.01 ± 0.008 ms 1.02 ± 0.011 ms 0.991 ± 0.013
array/dagger/N=256 (block 256)/add (X + X) 1.52 ± 0.078 ms 1.18 ± 0.0098 ms 1.28 ± 0.067
array/dagger/N=256 (block 256)/alloc (rand) 0.777 ± 0.039 ms 0.746 ± 0.047 ms 1.04 ± 0.085
array/dagger/N=256 (block 256)/broadcast (X .+ 1) 0.305 ± 0.0091 ms 0.317 ± 0.0024 ms 0.964 ± 0.03
array/dagger/N=256 (block 256)/map (sin.(X)) 0.815 ± 0.024 ms 1.09 ± 0.0092 ms 0.745 ± 0.023
array/dagger/N=256 (block 256)/norm 0.284 ± 0.0017 ms 0.294 ± 0.0048 ms 0.965 ± 0.017
array/dagger/N=256 (block 256)/reduce (sum) 0.458 ± 0.019 ms 0.452 ± 0.033 ms 1.01 ± 0.086
array/dagger/N=256 (block 256)/transpose (permutedims) 0.732 ± 0.033 ms 0.704 ± 0.017 ms 1.04 ± 0.053
linalg/dagger/N=1024 (block 128)/cholesky 0.507 ± 0.0022 s 0.514 ± 0.0085 s 0.987 ± 0.017
linalg/dagger/N=1024 (block 128)/lu 0.239 ± 0.012 s 0.876 ± 0.063 s 0.273 ± 0.024
linalg/dagger/N=1024 (block 128)/matmul (A*A) 0.553 ± 0.22 s 0.27 ± 0.15 s 2.05 ± 1.4
linalg/dagger/N=1024 (block 128)/matvec (A*x) 0.116 ± 0.0079 s 0.108 ± 0.0051 s 1.07 ± 0.089
linalg/dagger/N=1024 (block 128)/qr 2.36 ± 2.1 s 4.99 s 0.472
linalg/dagger/N=1024 (block 128)/solve (A\b via lu) 0.74 ± 0.31 s 2.99 s 0.247
linalg/dagger/N=1024 (block 128)/svd 50.7 s 48.4 s 1.05
linalg/dagger/N=1024 (block 128)/syrk (A'*A) 0.69 ± 0.059 s 0.2 ± 0.077 s 3.45 ± 1.4
linalg/dagger/N=1024 (block 512)/cholesky 0.0923 ± 0.062 s 0.0819 ± 0.19 s 1.13 ± 2.7
linalg/dagger/N=1024 (block 512)/lu 0.0369 ± 0.00013 s 0.0372 ± 0.0018 s 0.993 ± 0.047
linalg/dagger/N=1024 (block 512)/matmul (A*A) 30.7 ± 2.5 ms 29.8 ± 1.9 ms 1.03 ± 0.11
linalg/dagger/N=1024 (block 512)/matvec (A*x) 8.3 ± 1.1 ms 7.39 ± 1.3 ms 1.12 ± 0.25
linalg/dagger/N=1024 (block 512)/qr 0.109 ± 0.0014 s 0.105 ± 0.00069 s 1.04 ± 0.015
linalg/dagger/N=1024 (block 512)/solve (A\b via lu) 0.051 ± 0.018 s 0.0575 ± 0.019 s 0.887 ± 0.42
linalg/dagger/N=1024 (block 512)/svd 0.0342 h 0.0347 h 0.988
linalg/dagger/N=1024 (block 512)/syrk (A'*A) 0.0323 ± 0.00075 s 31.4 ± 0.22 ms 1.03 ± 0.025
linalg/dagger/N=256 (block 128)/cholesky 5.42 ± 0.79 ms 6.08 ± 0.72 ms 0.892 ± 0.17
linalg/dagger/N=256 (block 128)/lu 7.22 ± 0.18 ms 7.56 ± 0.53 ms 0.955 ± 0.071
linalg/dagger/N=256 (block 128)/matmul (A*A) 5.71 ± 0.12 ms 6.04 ± 0.72 ms 0.947 ± 0.11
linalg/dagger/N=256 (block 128)/matvec (A*x) 2.38 ± 0.06 ms 2.13 ± 0.034 ms 1.11 ± 0.034
linalg/dagger/N=256 (block 128)/qr 7.8 ± 0.35 ms 7.7 ± 0.12 ms 1.01 ± 0.048
linalg/dagger/N=256 (block 128)/solve (A\b via lu) 16.4 ± 0.39 ms 15.5 ± 0.58 ms 1.06 ± 0.047
linalg/dagger/N=256 (block 128)/svd 0.61 ± 0.019 s 0.632 ± 0.082 s 0.966 ± 0.13
linalg/dagger/N=256 (block 128)/syrk (A'*A) 5.92 ± 0.2 ms 5.71 ± 0.49 ms 1.04 ± 0.096
linalg/dagger/N=256 (block 256)/cholesky 2.69 ± 0.052 ms 2.69 ± 0.084 ms 1 ± 0.037
linalg/dagger/N=256 (block 256)/lu 4.2 ± 0.036 ms 4.3 ± 0.35 ms 0.976 ± 0.08
linalg/dagger/N=256 (block 256)/matmul (A*A) 2.28 ± 0.044 ms 2.45 ± 0.16 ms 0.932 ± 0.064
linalg/dagger/N=256 (block 256)/matvec (A*x) 1.43 ± 0.13 ms 1.41 ± 0.1 ms 1.01 ± 0.12
linalg/dagger/N=256 (block 256)/qr 5.42 ± 0.042 ms 5.2 ± 0.054 ms 1.04 ± 0.013
linalg/dagger/N=256 (block 256)/solve (A\b via lu) 0.445 ± 0.38 s 0.28 ± 0.13 s 1.59 ± 1.5
linalg/dagger/N=256 (block 256)/svd 0.519 ± 0.07 s 0.447 ± 0.039 s 1.16 ± 0.19
linalg/dagger/N=256 (block 256)/syrk (A'*A) 3.31 ± 0.12 ms 3.66 ± 0.17 ms 0.904 ± 0.054
sparse/dagger/N=1024 (block 64)/cg solve (laplacian) 12.8 s 9.5 s 1.35
sparse/dagger/N=1024 (block 64)/spgemm (S*S) 6.62 s 5.59 s 1.18
sparse/dagger/N=1024 (block 64)/spmv (S*x) 0.53 ± 0.0038 s 0.52 ± 0.0081 s 1.02 ± 0.017
sparse/dagger/N=256 (block 16)/cg solve (laplacian) 11.9 s 11.4 s 1.04
sparse/dagger/N=256 (block 16)/spgemm (S*S) 6.35 s 5.79 s 1.1
sparse/dagger/N=256 (block 16)/spmv (S*x) 0.529 ± 0.028 s 0.481 ± 0.0048 s 1.1 ± 0.059
stencil/dagger/N=1024 (block 128)/assign (const) 0.0372 ± 0.0041 s 25.8 ± 5.8 ms 1.44 ± 0.36
stencil/dagger/N=1024 (block 128)/multi-expr 0.214 ± 0.0022 s 0.218 ± 0.0096 s 0.983 ± 0.044
stencil/dagger/N=1024 (block 512)/assign (const) 3.8 ± 0.5 ms 4.57 ± 0.19 ms 0.831 ± 0.12
stencil/dagger/N=1024 (block 512)/multi-expr 2.96 ± 4.3 ms 0.0545 ± 0.031 s 0.0543 ± 0.085
stencil/dagger/N=256 (block 128)/assign (const) 1.08 ± 0.08 ms 1.16 ± 0.088 ms 0.932 ± 0.099
stencil/dagger/N=256 (block 128)/multi-expr 2.2 ± 0.076 ms 2.13 ± 0.026 ms 1.04 ± 0.038
stencil/dagger/N=256 (block 128)/neighbors (Clamp) 2.49 ± 0.027 ms
stencil/dagger/N=256 (block 128)/neighbors (Pad) 2.45 ± 0.016 ms
stencil/dagger/N=256 (block 128)/neighbors (Reflect) 2.39 ± 0.024 ms
stencil/dagger/N=256 (block 128)/neighbors (Wrap) 2.56 ± 0.022 ms
stencil/dagger/N=256 (block 256)/assign (const) 0.635 ± 0.016 ms 0.632 ± 0.01 ms 1.01 ± 0.031
stencil/dagger/N=256 (block 256)/multi-expr 1.56 ± 0.14 ms 1.71 ± 0.28 ms 0.913 ± 0.17
stencil/dagger/N=256 (block 256)/neighbors (Clamp) 1.42 ± 0.019 ms
stencil/dagger/N=256 (block 256)/neighbors (Pad) 1.55 ± 0.019 ms
stencil/dagger/N=256 (block 256)/neighbors (Reflect) 1.6 ± 0.044 ms
stencil/dagger/N=256 (block 256)/update (+) 1.1 ± 0.047 ms
stencil/dagger/N=1024 (block 128)/update (+) 0.164 ± 0.0019 s
stencil/dagger/N=1024 (block 512)/update (+) 15.4 ± 1.5 ms
stencil/dagger/N=256 (block 128)/update (+) 1.2 ± 0.016 ms
time_to_load 1.03 ± 0.0095 s 1.02 ± 0.012 s 1.01 ± 0.015

Allocations / memory

master dirty master / dirty
array/dagger/N=1024 (block 128)/add (X + X) 0.161 M allocs: 15.5 MB 0.152 M allocs: 16.5 MB 0.945
array/dagger/N=1024 (block 128)/alloc (rand) 0.0499 M allocs: 5 MB 0.0457 M allocs: 5.17 MB 0.968
array/dagger/N=1024 (block 128)/broadcast (X .+ 1) 0.0796 M allocs: 6.99 MB 0.0946 M allocs: 6.93 MB 1.01
array/dagger/N=1024 (block 128)/map (sin.(X)) 0.0748 M allocs: 6.91 MB 0.0734 M allocs: 6.95 MB 0.993
array/dagger/N=1024 (block 128)/norm 0.0581 M allocs: 2.49 MB 0.0576 M allocs: 2.47 MB 1.01
array/dagger/N=1024 (block 128)/reduce (sum) 0.0857 M allocs: 3.48 MB 0.0957 M allocs: 3.99 MB 0.872
array/dagger/N=1024 (block 128)/transpose (permutedims) 0.0621 M allocs: 6.87 MB 0.0639 M allocs: 6.9 MB 0.995
array/dagger/N=1024 (block 512)/add (X + X) 13 k allocs: 12.6 MB 6.05 k allocs: 8.24 MB 1.52
array/dagger/N=1024 (block 512)/alloc (rand) 2.6 k allocs: 4.12 MB 2 k allocs: 8.07 MB 0.511
array/dagger/N=1024 (block 512)/broadcast (X .+ 1) 4.21 k allocs: 2.21 MB 2.46 k allocs: 2.2 MB 1
array/dagger/N=1024 (block 512)/map (sin.(X)) 2.79 k allocs: 4.15 MB 4.36 k allocs: 2.2 MB 1.89
array/dagger/N=1024 (block 512)/norm 2.71 k allocs: 0.106 MB 2.76 k allocs: 0.109 MB 0.978
array/dagger/N=1024 (block 512)/reduce (sum) 3.27 k allocs: 0.114 MB 3 k allocs: 0.103 MB 1.11
array/dagger/N=1024 (block 512)/transpose (permutedims) 5.85 k allocs: 2.33 MB 4.37 k allocs: 2.33 MB 1
array/dagger/N=256 (block 128)/add (X + X) 6.04 k allocs: 0.745 MB 6.03 k allocs: 0.745 MB 1
array/dagger/N=256 (block 128)/alloc (rand) 2 k allocs: 0.569 MB 2 k allocs: 0.569 MB 1
array/dagger/N=256 (block 128)/broadcast (X .+ 1) 1.84 k allocs: 0.564 MB 1.84 k allocs: 0.564 MB 1
array/dagger/N=256 (block 128)/map (sin.(X)) 1.73 k allocs: 0.558 MB 1.73 k allocs: 0.558 MB 1
array/dagger/N=256 (block 128)/norm 1.92 k allocs: 0.0649 MB 1.92 k allocs: 0.0649 MB 1
array/dagger/N=256 (block 128)/reduce (sum) 4.29 k allocs: 0.168 MB 4.44 k allocs: 0.174 MB 0.966
array/dagger/N=256 (block 128)/transpose (permutedims) 2.97 k allocs: 0.63 MB 2.97 k allocs: 0.63 MB 1
array/dagger/N=256 (block 256)/add (X + X) 2.43 k allocs: 0.612 MB 2.41 k allocs: 0.611 MB 1
array/dagger/N=256 (block 256)/alloc (rand) 0.588 k allocs: 0.521 MB 0.59 k allocs: 0.521 MB 1
array/dagger/N=256 (block 256)/broadcast (X .+ 1) 0.501 k allocs: 0.518 MB 0.501 k allocs: 0.518 MB 1
array/dagger/N=256 (block 256)/map (sin.(X)) 0.469 k allocs: 0.516 MB 0.536 k allocs: 0.519 MB 0.995
array/dagger/N=256 (block 256)/norm 0.516 k allocs: 18.1 kB 0.516 k allocs: 18.1 kB 1
array/dagger/N=256 (block 256)/reduce (sum) 0.675 k allocs: 26 kB 0.675 k allocs: 26 kB 1
array/dagger/N=256 (block 256)/transpose (permutedims) 1.24 k allocs: 0.563 MB 1.24 k allocs: 0.563 MB 1
linalg/dagger/N=1024 (block 128)/cholesky 0.701 M allocs: 0.0416 GB 0.649 M allocs: 0.0395 GB 1.05
linalg/dagger/N=1024 (block 128)/lu 0.467 M allocs: 0.0332 GB 1.31 M allocs: 0.0892 GB 0.372
linalg/dagger/N=1024 (block 128)/matmul (A*A) 0.519 M allocs: 31.1 MB 0.507 M allocs: 30.1 MB 1.03
linalg/dagger/N=1024 (block 128)/matvec (A*x) 0.19 M allocs: 11.5 MB 0.175 M allocs: 10.5 MB 1.1
linalg/dagger/N=1024 (block 128)/qr 0.379 M allocs: 0.0336 GB 0.796 M allocs: 0.0593 GB 0.566
linalg/dagger/N=1024 (block 128)/solve (A\b via lu) 0.806 M allocs: 0.0575 GB 2.13 M allocs: 0.128 GB 0.449
linalg/dagger/N=1024 (block 128)/svd 15.8 M allocs: 2.52 GB 16.5 M allocs: 2.55 GB 0.991
linalg/dagger/N=1024 (block 128)/syrk (A'*A) 0.868 M allocs: 0.059 GB 0.389 M allocs: 29.6 MB 2.04
linalg/dagger/N=1024 (block 512)/cholesky 0.0362 M allocs: 9.62 MB 0.0412 M allocs: 9.84 MB 0.978
linalg/dagger/N=1024 (block 512)/lu 16.3 k allocs: 14.7 MB 17.5 k allocs: 14.7 MB 0.997
linalg/dagger/N=1024 (block 512)/matmul (A*A) 9.03 k allocs: 8.35 MB 9.02 k allocs: 8.35 MB 1
linalg/dagger/N=1024 (block 512)/matvec (A*x) 11.7 k allocs: 0.513 MB 11.4 k allocs: 0.498 MB 1.03
linalg/dagger/N=1024 (block 512)/qr 12.9 k allocs: 9.67 MB 12.8 k allocs: 9.67 MB 1
linalg/dagger/N=1024 (block 512)/solve (A\b via lu) 0.0374 M allocs: 15.6 MB 0.0396 M allocs: 15.7 MB 0.995
linalg/dagger/N=1024 (block 512)/svd 0.161 M allocs: 0.312 GB 1.63 M allocs: 0.391 GB 0.797
linalg/dagger/N=1024 (block 512)/syrk (A'*A) 10.2 k allocs: 20.4 MB 10.2 k allocs: 20.4 MB 1
linalg/dagger/N=256 (block 128)/cholesky 9.32 k allocs: 1.02 MB 9.76 k allocs: 1.04 MB 0.983
linalg/dagger/N=256 (block 128)/lu 17 k allocs: 1.58 MB 18.3 k allocs: 1.63 MB 0.969
linalg/dagger/N=256 (block 128)/matmul (A*A) 9.85 k allocs: 0.887 MB 9.93 k allocs: 0.89 MB 0.997
linalg/dagger/N=256 (block 128)/matvec (A*x) 5.48 k allocs: 0.231 MB 5.44 k allocs: 0.229 MB 1.01
linalg/dagger/N=256 (block 128)/qr 13.4 k allocs: 1.33 MB 13.7 k allocs: 1.34 MB 0.991
linalg/dagger/N=256 (block 128)/solve (A\b via lu) 0.035 M allocs: 2.39 MB 0.0346 M allocs: 2.36 MB 1.01
linalg/dagger/N=256 (block 128)/svd 0.169 M allocs: 27.2 MB 0.177 M allocs: 27.5 MB 0.988
linalg/dagger/N=256 (block 128)/syrk (A'*A) 10.6 k allocs: 1.69 MB 10.6 k allocs: 1.69 MB 1
linalg/dagger/N=256 (block 256)/cholesky 3.95 k allocs: 0.689 MB 3.94 k allocs: 0.688 MB 1
linalg/dagger/N=256 (block 256)/lu 7.24 k allocs: 1.34 MB 7.27 k allocs: 1.34 MB 1
linalg/dagger/N=256 (block 256)/matmul (A*A) 2.66 k allocs: 0.623 MB 2.65 k allocs: 0.621 MB 1
linalg/dagger/N=256 (block 256)/matvec (A*x) 2.61 k allocs: 0.124 MB 2.55 k allocs: 0.121 MB 1.03
linalg/dagger/N=256 (block 256)/qr 5.12 k allocs: 0.867 MB 5.16 k allocs: 0.867 MB 1
linalg/dagger/N=256 (block 256)/solve (A\b via lu) 0.0548 M allocs: 5.52 MB 0.0563 M allocs: 6.57 MB 0.839
linalg/dagger/N=256 (block 256)/svd 21.9 k allocs: 7.06 MB 21.8 k allocs: 7.05 MB 1
linalg/dagger/N=256 (block 256)/syrk (A'*A) 4.15 k allocs: 2.2 MB 4.08 k allocs: 2.19 MB 1
sparse/dagger/N=1024 (block 64)/cg solve (laplacian) 18.1 M allocs: 0.812 GB 14.3 M allocs: 0.646 GB 1.26
sparse/dagger/N=1024 (block 64)/spgemm (S*S) 11.2 M allocs: 0.513 GB 8.94 M allocs: 0.428 GB 1.2
sparse/dagger/N=1024 (block 64)/spmv (S*x) 0.84 M allocs: 0.0355 GB 0.833 M allocs: 0.0351 GB 1.01
sparse/dagger/N=256 (block 16)/cg solve (laplacian) 17.1 M allocs: 0.765 GB 16.6 M allocs: 0.749 GB 1.02
sparse/dagger/N=256 (block 16)/spgemm (S*S) 10.6 M allocs: 0.466 GB 9.15 M allocs: 0.415 GB 1.12
sparse/dagger/N=256 (block 16)/spmv (S*x) 0.817 M allocs: 0.0343 GB 0.786 M allocs: 0.0331 GB 1.04
stencil/dagger/N=1024 (block 128)/assign (const) 0.0628 M allocs: 2.88 MB 0.0515 M allocs: 2.36 MB 1.22
stencil/dagger/N=1024 (block 128)/multi-expr 0.317 M allocs: 14.5 MB 0.322 M allocs: 14.7 MB 0.984
stencil/dagger/N=1024 (block 512)/assign (const) 4.81 k allocs: 0.219 MB 7.03 k allocs: 0.33 MB 0.664
stencil/dagger/N=1024 (block 512)/multi-expr 6.81 k allocs: 0.299 MB 6.99 k allocs: 0.309 MB 0.97
stencil/dagger/N=256 (block 128)/assign (const) 2.97 k allocs: 0.132 MB 2.9 k allocs: 0.129 MB 1.03
stencil/dagger/N=256 (block 128)/multi-expr 6.83 k allocs: 0.303 MB 6.81 k allocs: 0.302 MB 1
stencil/dagger/N=256 (block 128)/neighbors (Clamp) 6.33 k allocs: 0.29 MB
stencil/dagger/N=256 (block 128)/neighbors (Pad) 6.2 k allocs: 0.285 MB
stencil/dagger/N=256 (block 128)/neighbors (Reflect) 6.3 k allocs: 0.296 MB
stencil/dagger/N=256 (block 128)/neighbors (Wrap) 6.2 k allocs: 0.274 MB
stencil/dagger/N=256 (block 256)/assign (const) 1.21 k allocs: 0.0629 MB 1.23 k allocs: 0.0631 MB 0.997
stencil/dagger/N=256 (block 256)/multi-expr 3.07 k allocs: 0.655 MB 3.11 k allocs: 0.656 MB 1
stencil/dagger/N=256 (block 256)/neighbors (Clamp) 2.14 k allocs: 0.611 MB
stencil/dagger/N=256 (block 256)/neighbors (Pad) 2.13 k allocs: 0.612 MB
stencil/dagger/N=256 (block 256)/neighbors (Reflect) 2.14 k allocs: 0.619 MB
stencil/dagger/N=256 (block 256)/update (+) 1.81 k allocs: 0.589 MB
stencil/dagger/N=1024 (block 128)/update (+) 0.233 M allocs: 10.6 MB
stencil/dagger/N=1024 (block 512)/update (+) 15.2 k allocs: 0.682 MB
stencil/dagger/N=256 (block 128)/update (+) 3.85 k allocs: 0.17 MB
time_to_load 0.199 k allocs: 11.5 kB 0.199 k allocs: 11.5 kB 1

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

  • stencil/dagger/N=1024 (block 512)/multi-expr (time): +1740.3%
  • linalg/dagger/N=1024 (block 512)/svd (allocs): +911.4%
  • linalg/dagger/N=1024 (block 128)/solve (A\b via lu) (time): +304.3%
  • linalg/dagger/N=1024 (block 128)/lu (time): +266.5%
  • linalg/dagger/N=1024 (block 128)/lu (allocs): +181.4%
  • linalg/dagger/N=1024 (block 128)/lu (memory): +168.5%
  • linalg/dagger/N=1024 (block 128)/solve (A\b via lu) (allocs): +163.8%
  • linalg/dagger/N=1024 (block 128)/solve (A\b via lu) (memory): +122.8%
  • linalg/dagger/N=1024 (block 128)/qr (time): +111.8%
  • linalg/dagger/N=1024 (block 128)/qr (allocs): +110.0%
  • array/dagger/N=1024 (block 512)/alloc (rand) (memory): +95.8%
  • linalg/dagger/N=1024 (block 128)/qr (memory): +76.5%
  • array/dagger/N=1024 (block 512)/map (sin.(X)) (allocs): +56.0%
  • stencil/dagger/N=1024 (block 512)/assign (const) (memory): +50.5%
  • stencil/dagger/N=1024 (block 512)/assign (const) (allocs): +46.3%
  • linalg/dagger/N=1024 (block 512)/svd (memory): +25.5%

Improvements

  • array/dagger/N=1024 (block 512)/add (X + X) (time): -72.8%
  • linalg/dagger/N=1024 (block 128)/syrk (A'*A) (time): -71.0%
  • linalg/dagger/N=1024 (block 128)/syrk (A'*A) (allocs): -55.1%
  • array/dagger/N=1024 (block 512)/add (X + X) (allocs): -53.5%
  • linalg/dagger/N=1024 (block 128)/syrk (A'*A) (memory): -51.0%
  • array/dagger/N=1024 (block 512)/map (sin.(X)) (memory): -47.1%
  • array/dagger/N=1024 (block 512)/broadcast (X .+ 1) (allocs): -41.5%
  • array/dagger/N=1024 (block 512)/add (X + X) (memory): -34.3%
  • array/dagger/N=1024 (block 512)/transpose (permutedims) (allocs): -25.2%
Within noise (5 metric(s) past threshold but inside the ±spread; not counted)
  • array/dagger/N=256 (block 128)/reduce (sum) (time): 922.4%
  • array/dagger/N=1024 (block 512)/transpose (permutedims) (time): 440.5%
  • linalg/dagger/N=256 (block 256)/solve (A\b via lu) (time): -37.0%
  • linalg/dagger/N=1024 (block 128)/matmul (A*A) (time): -51.3%
  • array/dagger/N=1024 (block 512)/norm (time): -94.3%
MPI benchmarks (4 ranks)

Dagger benchmarks: dirty vs master

Median time

master dirty master / dirty
array/dagger/N=1024 (block 128)/add (X + X) 0.133 ± 0.002 s 0.134 ± 0.0002 s 0.999 ± 0.015
array/dagger/N=1024 (block 128)/alloc (rand) 30.2 ± 1.3 ms 29.7 ± 0.91 ms 1.02 ± 0.055
array/dagger/N=1024 (block 128)/broadcast (X .+ 1) 15.5 ± 0.21 ms 15.3 ± 0.045 ms 1.01 ± 0.014
array/dagger/N=1024 (block 128)/map (sin.(X)) 17.2 ± 0.4 ms 17.1 ± 0.46 ms 1.01 ± 0.036
array/dagger/N=1024 (block 128)/norm 17.4 ± 0.23 ms 17 ± 0.084 ms 1.02 ± 0.014
array/dagger/N=1024 (block 128)/reduce (sum) 30.1 ± 1 ms 30 ± 16 ms 1 ± 0.52
array/dagger/N=1024 (block 128)/transpose (permutedims) 0.0666 ± 0.00019 s 0.0665 ± 0.0012 s 1 ± 0.018
array/dagger/N=1024 (block 512)/add (X + X) 13.5 ± 0.54 ms 13.5 ± 0.5 ms 1 ± 0.055
array/dagger/N=1024 (block 512)/alloc (rand) 3.65 ± 1.5 ms 3.44 ± 1.5 ms 1.06 ± 0.63
array/dagger/N=1024 (block 512)/broadcast (X .+ 1) 2.39 ± 0.049 ms 2.41 ± 0.034 ms 0.991 ± 0.025
array/dagger/N=1024 (block 512)/map (sin.(X)) 4.81 ± 0.42 ms 4.87 ± 0.42 ms 0.988 ± 0.12
array/dagger/N=1024 (block 512)/norm 4.87 ± 0.091 ms 4.88 ± 0.077 ms 0.998 ± 0.024
array/dagger/N=1024 (block 512)/reduce (sum) 2.31 ± 0.01 ms 2.31 ± 0.036 ms 1 ± 0.016
array/dagger/N=1024 (block 512)/transpose (permutedims) 11.8 ± 0.65 ms 12.1 ± 1 ms 0.977 ± 0.1
array/dagger/N=256 (block 128)/add (X + X) 9.48 ± 0.14 ms 9.55 ± 0.92 ms 0.993 ± 0.097
array/dagger/N=256 (block 128)/alloc (rand) 3.09 ± 0.12 ms 3.09 ± 0.028 ms 0.999 ± 0.04
array/dagger/N=256 (block 128)/broadcast (X .+ 1) 1.14 ± 0.037 ms 1.16 ± 0.011 ms 0.987 ± 0.033
array/dagger/N=256 (block 128)/map (sin.(X)) 1.25 ± 0.0041 ms 1.26 ± 0.012 ms 0.992 ± 0.01
array/dagger/N=256 (block 128)/norm 1.49 ± 0.024 ms 1.44 ± 0.02 ms 1.03 ± 0.022
array/dagger/N=256 (block 128)/reduce (sum) 2.3 ± 0.059 ms 2.25 ± 0.039 ms 1.02 ± 0.032
array/dagger/N=256 (block 128)/transpose (permutedims) 4.89 ± 0.034 ms 4.8 ± 0.019 ms 1.02 ± 0.008
array/dagger/N=256 (block 256)/add (X + X) 3.24 ± 0.014 ms 3.21 ± 0.015 ms 1.01 ± 0.0064
array/dagger/N=256 (block 256)/alloc (rand) 4.55 ± 7.6 ms 1.51 ± 0.032 ms 3.01 ± 5
array/dagger/N=256 (block 256)/broadcast (X .+ 1) 0.483 ± 0.016 ms 0.472 ± 0.0091 ms 1.02 ± 0.04
array/dagger/N=256 (block 256)/map (sin.(X)) 1.15 ± 0.055 ms 1.06 ± 0.019 ms 1.09 ± 0.056
array/dagger/N=256 (block 256)/norm 0.988 ± 0.0029 ms 0.956 ± 0.0041 ms 1.03 ± 0.0054
array/dagger/N=256 (block 256)/reduce (sum) 0.71 ± 0.019 ms 0.694 ± 0.011 ms 1.02 ± 0.032
array/dagger/N=256 (block 256)/transpose (permutedims) 1.81 ± 0.011 ms 1.81 ± 0.008 ms 1 ± 0.0075
linalg/dagger/N=1024 (block 128)/cholesky 3.65 s 3.57 s 1.02
linalg/dagger/N=1024 (block 128)/lu 23.2 s 23.6 s 0.983
linalg/dagger/N=1024 (block 128)/matmul (A*A) 6.79 s 7.76 s 0.875
linalg/dagger/N=1024 (block 128)/matvec (A*x) 0.134 ± 0.0032 s 0.25 ± 0.11 s 0.536 ± 0.25
linalg/dagger/N=1024 (block 128)/qr 3.48 s 3.96 s 0.88
linalg/dagger/N=1024 (block 128)/solve (A\b via lu) 24.3 s 25.1 s 0.971
linalg/dagger/N=1024 (block 128)/syrk (A'*A) 3.46 s 3.27 s 1.06
linalg/dagger/N=1024 (block 512)/cholesky 0.163 ± 0.057 s 0.309 ± 0.18 s 0.527 ± 0.36
linalg/dagger/N=1024 (block 512)/lu 7.45 s 7.61 s 0.979
linalg/dagger/N=1024 (block 512)/matmul (A*A) 0.238 ± 0.047 s 0.197 ± 0.031 s 1.21 ± 0.3
linalg/dagger/N=1024 (block 512)/matvec (A*x) 15.7 ± 0.03 ms 15.9 ± 0.15 ms 0.991 ± 0.0096
linalg/dagger/N=1024 (block 512)/qr 0.419 ± 0.071 s 0.423 ± 0.041 s 0.99 ± 0.19
linalg/dagger/N=1024 (block 512)/solve (A\b via lu) 7.34 s 7.57 s 0.97
linalg/dagger/N=1024 (block 512)/syrk (A'*A) 0.174 ± 0.025 s 0.287 ± 0.012 s 0.606 ± 0.09
linalg/dagger/N=256 (block 128)/cholesky 0.217 ± 0.079 s 0.0996 ± 0.012 s 2.18 ± 0.83
linalg/dagger/N=256 (block 128)/lu 1.34 ± 0.0014 s 1.34 ± 0.018 s 0.996 ± 0.013
linalg/dagger/N=256 (block 128)/matmul (A*A) 0.17 ± 0.007 s 0.16 ± 0.0044 s 1.06 ± 0.053
linalg/dagger/N=256 (block 128)/matvec (A*x) 14.1 ± 0.043 ms 14 ± 0.016 ms 1.01 ± 0.0033
linalg/dagger/N=256 (block 128)/qr 0.264 ± 0.032 s 0.215 ± 0.0077 s 1.23 ± 0.15
linalg/dagger/N=256 (block 128)/solve (A\b via lu) 1.36 ± 0.0063 s 1.37 ± 0.018 s 0.992 ± 0.014
linalg/dagger/N=256 (block 128)/syrk (A'*A) 0.149 ± 0.0031 s 0.145 ± 0.0074 s 1.03 ± 0.057
linalg/dagger/N=256 (block 256)/cholesky 0.0452 ± 0.032 s 13.8 ± 0.0055 ms 3.28 ± 2.4
linalg/dagger/N=256 (block 256)/lu 0.495 ± 0.00078 s 0.506 ± 0.0055 s 0.98 ± 0.011
linalg/dagger/N=256 (block 256)/matmul (A*A) 5.5 ± 0.65 ms 4.01 ± 0.027 ms 1.37 ± 0.16
linalg/dagger/N=256 (block 256)/matvec (A*x) 3.77 ± 0.076 ms 3.77 ± 0.11 ms 1 ± 0.034
linalg/dagger/N=256 (block 256)/qr 10.7 ± 0.31 ms 8.26 ± 0.027 ms 1.3 ± 0.037
linalg/dagger/N=256 (block 256)/solve (A\b via lu) 0.563 ± 0.053 s 0.505 ± 0.00032 s 1.11 ± 0.1
linalg/dagger/N=256 (block 256)/syrk (A'*A) 8.13 ± 0.031 ms 9.31 ± 1.3 ms 0.873 ± 0.12
sparse/dagger/N=1024 (block 64)/cg solve (laplacian) 9.98 s 16.6 s 0.601
sparse/dagger/N=1024 (block 64)/spgemm (S*S) 5.01 s 4.99 s 1.01
sparse/dagger/N=1024 (block 64)/spmv (S*x) 0.462 ± 0.00029 s 0.471 ± 0.0012 s 0.98 ± 0.0026
sparse/dagger/N=256 (block 16)/cg solve (laplacian) 11 s 12.4 s 0.891
sparse/dagger/N=256 (block 16)/spgemm (S*S) 4.91 s 4.9 s 1
sparse/dagger/N=256 (block 16)/spmv (S*x) 0.466 ± 0.0016 s 0.472 ± 0.00066 s 0.986 ± 0.0037
stencil/dagger/N=1024 (block 128)/alloc (neighbors Wrap) 1.03 ± 0.012 s 1.08 ± 0.0048 s 0.95 ± 0.012
stencil/dagger/N=1024 (block 128)/assign (const) 0.0628 ± 0.00067 s 0.0619 ± 5.4e-07 s 1.02 ± 0.011
stencil/dagger/N=1024 (block 128)/multi-expr 0.166 ± 0.00079 s 0.167 ± 0.0027 s 0.999 ± 0.017
stencil/dagger/N=1024 (block 128)/neighbors (Clamp) 0.921 ± 0.00046 s 0.909 ± 0.021 s 1.01 ± 0.024
stencil/dagger/N=1024 (block 128)/neighbors (Pad) 0.865 ± 0.012 s 0.851 ± 0.0023 s 1.02 ± 0.015
stencil/dagger/N=1024 (block 128)/neighbors (Reflect) 0.914 ± 0.0055 s 0.924 ± 0.0039 s 0.99 ± 0.0073
stencil/dagger/N=1024 (block 128)/neighbors (Wrap) 1.03 ± 0.00022 s 1.02 ± 0.014 s 1.01 ± 0.013
stencil/dagger/N=1024 (block 128)/update (+) 0.103 ± 0.0018 s 0.102 ± 2.8e-06 s 1.01 ± 0.017
stencil/dagger/N=1024 (block 512)/alloc (neighbors Wrap) 0.0886 ± 1.3e-05 s 0.0898 ± 6.3e-05 s 0.986 ± 0.00071
stencil/dagger/N=1024 (block 512)/assign (const) 5.04 ± 0.19 ms 4.98 ± 0.0073 ms 1.01 ± 0.038
stencil/dagger/N=1024 (block 512)/multi-expr 12.3 ± 0.13 ms 12.8 ± 0.075 ms 0.967 ± 0.012
stencil/dagger/N=1024 (block 512)/neighbors (Clamp) 0.0627 ± 1.9e-05 s 0.0633 ± 7.9e-05 s 0.992 ± 0.0013
stencil/dagger/N=1024 (block 512)/neighbors (Pad) 0.0469 ± 7.8e-05 s 0.0469 ± 9.4e-05 s 1 ± 0.0026
stencil/dagger/N=1024 (block 512)/neighbors (Reflect) 0.0631 ± 0.00048 s 0.0631 ± 0.00013 s 1 ± 0.0079
stencil/dagger/N=1024 (block 512)/neighbors (Wrap) 0.0875 ± 1.3e-05 s 0.0887 ± 0.0013 s 0.986 ± 0.015
stencil/dagger/N=1024 (block 512)/update (+) 7.95 ± 0.003 ms 7.88 ± 0.038 ms 1.01 ± 0.0049
stencil/dagger/N=256 (block 128)/alloc (neighbors Wrap) 0.0767 ± 0.00016 s 0.078 ± 0.00068 s 0.983 ± 0.0088
stencil/dagger/N=256 (block 128)/assign (const) 4.6 ± 0.0042 ms 4.63 ± 0.027 ms 0.994 ± 0.0059
stencil/dagger/N=256 (block 128)/multi-expr 11.6 ± 0.037 ms 11.5 ± 0.04 ms 1.01 ± 0.0048
stencil/dagger/N=256 (block 128)/neighbors (Clamp) 0.0506 ± 5.1e-07 s 0.0515 ± 0.00091 s 0.983 ± 0.017
stencil/dagger/N=256 (block 128)/neighbors (Pad) 0.0342 ± 6.3e-05 s 0.0346 ± 0.00012 s 0.988 ± 0.0038
stencil/dagger/N=256 (block 128)/neighbors (Reflect) 0.0508 ± 0.00016 s 0.0508 ± 5.3e-05 s 0.999 ± 0.0033
stencil/dagger/N=256 (block 128)/neighbors (Wrap) 0.075 ± 0.00057 s 0.076 ± 0.00052 s 0.986 ± 0.01
stencil/dagger/N=256 (block 128)/update (+) 7.06 ± 0.0087 ms 7.11 ± 0.015 ms 0.994 ± 0.0024
stencil/dagger/N=256 (block 256)/alloc (neighbors Wrap) 4.76 ± 0.025 ms 4.8 ± 0.02 ms 0.991 ± 0.0066
stencil/dagger/N=256 (block 256)/assign (const) 1.71 ± 0.013 ms 1.76 ± 0.033 ms 0.975 ± 0.02
stencil/dagger/N=256 (block 256)/multi-expr 3.58 ± 0.02 ms 3.65 ± 0.08 ms 0.979 ± 0.022
stencil/dagger/N=256 (block 256)/neighbors (Clamp) 3.66 ± 0.015 ms 3.71 ± 0.014 ms 0.988 ± 0.0056
stencil/dagger/N=256 (block 256)/neighbors (Pad) 3.88 ± 0.19 ms 3.57 ± 0.0058 ms 1.08 ± 0.054
stencil/dagger/N=256 (block 256)/neighbors (Reflect) 3.74 ± 0.011 ms 3.7 ± 0.063 ms 1.01 ± 0.017
stencil/dagger/N=256 (block 256)/neighbors (Wrap) 3.61 ± 0.023 ms 3.64 ± 0.01 ms 0.991 ± 0.0069
stencil/dagger/N=256 (block 256)/update (+) 2.22 ± 0.018 ms 2.22 ± 0.009 ms 1 ± 0.0092
time_to_load 0.777 ± 0.0096 s 0.778 ± 0.0049 s 0.999 ± 0.014

Allocations / memory

master dirty master / dirty
array/dagger/N=1024 (block 128)/add (X + X) 0.654 M allocs: 0.0349 GB 0.655 M allocs: 0.035 GB 0.999
array/dagger/N=1024 (block 128)/alloc (rand) 0.101 M allocs: 6.88 MB 0.101 M allocs: 6.88 MB 1
array/dagger/N=1024 (block 128)/broadcast (X .+ 1) 0.0412 M allocs: 3.54 MB 0.0411 M allocs: 3.54 MB 1
array/dagger/N=1024 (block 128)/map (sin.(X)) 0.0388 M allocs: 3.44 MB 0.0384 M allocs: 3.43 MB 1
array/dagger/N=1024 (block 128)/norm 0.0513 M allocs: 2.01 MB 0.0512 M allocs: 2.01 MB 1
array/dagger/N=1024 (block 128)/reduce (sum) 0.0811 M allocs: 3.03 MB 0.0812 M allocs: 3.03 MB 0.999
array/dagger/N=1024 (block 128)/transpose (permutedims) 0.303 M allocs: 17.7 MB 0.303 M allocs: 17.7 MB 1
array/dagger/N=1024 (block 512)/add (X + X) 0.0448 M allocs: 4.31 MB 0.0449 M allocs: 4.32 MB 0.999
array/dagger/N=1024 (block 512)/alloc (rand) 8.23 k allocs: 2.4 MB 8.23 k allocs: 2.4 MB 1
array/dagger/N=1024 (block 512)/broadcast (X .+ 1) 2.55 k allocs: 2.09 MB 2.61 k allocs: 2.1 MB 0.999
array/dagger/N=1024 (block 512)/map (sin.(X)) 2.37 k allocs: 2.09 MB 2.4 k allocs: 2.09 MB 1
array/dagger/N=1024 (block 512)/norm 3.34 k allocs: 0.131 MB 3.35 k allocs: 0.131 MB 1
array/dagger/N=1024 (block 512)/reduce (sum) 4.79 k allocs: 0.176 MB 4.77 k allocs: 0.175 MB 1.01
array/dagger/N=1024 (block 512)/transpose (permutedims) 21 k allocs: 3.09 MB 21.1 k allocs: 3.09 MB 1
array/dagger/N=256 (block 128)/add (X + X) 0.0448 M allocs: 2.44 MB 0.0449 M allocs: 2.44 MB 0.999
array/dagger/N=256 (block 128)/alloc (rand) 8.23 k allocs: 0.527 MB 8.23 k allocs: 0.527 MB 1
array/dagger/N=256 (block 128)/broadcast (X .+ 1) 2.55 k allocs: 0.219 MB 2.57 k allocs: 0.22 MB 0.996
array/dagger/N=256 (block 128)/map (sin.(X)) 2.42 k allocs: 0.213 MB 2.44 k allocs: 0.214 MB 0.996
array/dagger/N=256 (block 128)/norm 3.36 k allocs: 0.131 MB 3.33 k allocs: 0.13 MB 1.01
array/dagger/N=256 (block 128)/reduce (sum) 4.79 k allocs: 0.176 MB 4.79 k allocs: 0.176 MB 1
array/dagger/N=256 (block 128)/transpose (permutedims) 21 k allocs: 1.22 MB 21 k allocs: 1.22 MB 0.999
array/dagger/N=256 (block 256)/add (X + X) 14.1 k allocs: 1.24 MB 14.1 k allocs: 1.24 MB 0.999
array/dagger/N=256 (block 256)/alloc (rand) 3.53 k allocs: 0.677 MB 3.53 k allocs: 0.677 MB 1
array/dagger/N=256 (block 256)/broadcast (X .+ 1) 0.677 k allocs: 0.525 MB 0.704 k allocs: 0.526 MB 0.998
array/dagger/N=256 (block 256)/map (sin.(X)) 0.634 k allocs: 0.523 MB 0.636 k allocs: 0.523 MB 1
array/dagger/N=256 (block 256)/norm 0.969 k allocs: 0.0392 MB 0.992 k allocs: 0.0401 MB 0.978
array/dagger/N=256 (block 256)/reduce (sum) 0.976 k allocs: 0.0387 MB 0.978 k allocs: 0.0387 MB 0.999
array/dagger/N=256 (block 256)/transpose (permutedims) 6.67 k allocs: 0.852 MB 6.67 k allocs: 0.852 MB 1
linalg/dagger/N=1024 (block 128)/cholesky 1.52 M allocs: 0.0793 GB 1.53 M allocs: 0.0793 GB 0.999
linalg/dagger/N=1024 (block 128)/lu 0.0492 G allocs: 2.35 GB 0.0492 G allocs: 2.35 GB 1
linalg/dagger/N=1024 (block 128)/matmul (A*A) 3.35 M allocs: 0.165 GB 3.35 M allocs: 0.165 GB 1
linalg/dagger/N=1024 (block 128)/matvec (A*x) 0.607 M allocs: 31.1 MB 0.607 M allocs: 31.1 MB 1
linalg/dagger/N=1024 (block 128)/qr 2.32 M allocs: 0.118 GB 2.32 M allocs: 0.118 GB 1
linalg/dagger/N=1024 (block 128)/solve (A\b via lu) 0.0502 G allocs: 2.39 GB 0.0502 G allocs: 2.39 GB 1
linalg/dagger/N=1024 (block 128)/syrk (A'*A) 2.53 M allocs: 0.127 GB 2.53 M allocs: 0.127 GB 1
linalg/dagger/N=1024 (block 512)/cholesky 0.0862 M allocs: 6.43 MB 0.0862 M allocs: 6.44 MB 1
linalg/dagger/N=1024 (block 512)/lu 18 M allocs: 0.858 GB 18 M allocs: 0.858 GB 1
linalg/dagger/N=1024 (block 512)/matmul (A*A) 0.0998 M allocs: 7.06 MB 0.0999 M allocs: 7.06 MB 0.999
linalg/dagger/N=1024 (block 512)/matvec (A*x) 0.0609 M allocs: 3.13 MB 0.0609 M allocs: 3.13 MB 1
linalg/dagger/N=1024 (block 512)/qr 0.122 M allocs: 8.48 MB 0.122 M allocs: 8.49 MB 1
linalg/dagger/N=1024 (block 512)/solve (A\b via lu) 18.1 M allocs: 0.868 GB 18.1 M allocs: 0.868 GB 1
linalg/dagger/N=1024 (block 512)/syrk (A'*A) 0.0981 M allocs: 13 MB 0.0983 M allocs: 13 MB 0.999
linalg/dagger/N=256 (block 128)/cholesky 0.0862 M allocs: 4.56 MB 0.0862 M allocs: 4.56 MB 0.999
linalg/dagger/N=256 (block 128)/lu 4.59 M allocs: 0.218 GB 4.59 M allocs: 0.218 GB 1
linalg/dagger/N=256 (block 128)/matmul (A*A) 0.0998 M allocs: 5.18 MB 0.0999 M allocs: 5.19 MB 0.999
linalg/dagger/N=256 (block 128)/matvec (A*x) 0.0609 M allocs: 3.13 MB 0.0609 M allocs: 3.13 MB 1
linalg/dagger/N=256 (block 128)/qr 0.122 M allocs: 6.41 MB 0.122 M allocs: 6.42 MB 0.999
linalg/dagger/N=256 (block 128)/solve (A\b via lu) 4.72 M allocs: 0.225 GB 4.72 M allocs: 0.225 GB 1
linalg/dagger/N=256 (block 128)/syrk (A'*A) 0.0984 M allocs: 5.52 MB 0.0983 M allocs: 5.52 MB 1
linalg/dagger/N=256 (block 256)/cholesky 23.6 k allocs: 1.75 MB 23.6 k allocs: 1.75 MB 1
linalg/dagger/N=256 (block 256)/lu 2.03 M allocs: 0.0985 GB 2.03 M allocs: 0.0985 GB 1
linalg/dagger/N=256 (block 256)/matmul (A*A) 14.5 k allocs: 1.26 MB 14.6 k allocs: 1.26 MB 0.999
linalg/dagger/N=256 (block 256)/matvec (A*x) 17.3 k allocs: 0.911 MB 17.3 k allocs: 0.911 MB 1
linalg/dagger/N=256 (block 256)/qr 27.5 k allocs: 2.07 MB 27.6 k allocs: 2.07 MB 0.999
linalg/dagger/N=256 (block 256)/solve (A\b via lu) 2.08 M allocs: 0.101 GB 2.08 M allocs: 0.101 GB 1
linalg/dagger/N=256 (block 256)/syrk (A'*A) 21.2 k allocs: 3.11 MB 21.3 k allocs: 3.11 MB 1
sparse/dagger/N=1024 (block 64)/cg solve (laplacian) 28.2 M allocs: 1.41 GB 28.1 M allocs: 1.41 GB 1
sparse/dagger/N=1024 (block 64)/spgemm (S*S) 18.1 M allocs: 0.89 GB 18.1 M allocs: 0.891 GB 0.999
sparse/dagger/N=1024 (block 64)/spmv (S*x) 2.12 M allocs: 0.106 GB 2.12 M allocs: 0.106 GB 1
sparse/dagger/N=256 (block 16)/cg solve (laplacian) 28.2 M allocs: 1.41 GB 28.1 M allocs: 1.41 GB 1
sparse/dagger/N=256 (block 16)/spgemm (S*S) 18 M allocs: 0.869 GB 18.1 M allocs: 0.869 GB 1
sparse/dagger/N=256 (block 16)/spmv (S*x) 2.12 M allocs: 0.106 GB 2.12 M allocs: 0.106 GB 1
stencil/dagger/N=1024 (block 128)/alloc (neighbors Wrap) 3.97 M allocs: 0.199 GB 3.98 M allocs: 0.199 GB 0.998
stencil/dagger/N=1024 (block 128)/assign (const) 0.293 M allocs: 15.3 MB 0.293 M allocs: 15.3 MB 1
stencil/dagger/N=1024 (block 128)/multi-expr 0.812 M allocs: 0.0415 GB 0.812 M allocs: 0.0415 GB 1
stencil/dagger/N=1024 (block 128)/neighbors (Clamp) 3.49 M allocs: 0.173 GB 3.49 M allocs: 0.173 GB 1
stencil/dagger/N=1024 (block 128)/neighbors (Pad) 3.26 M allocs: 0.162 GB 3.26 M allocs: 0.162 GB 1
stencil/dagger/N=1024 (block 128)/neighbors (Reflect) 3.49 M allocs: 0.173 GB 3.49 M allocs: 0.173 GB 0.998
stencil/dagger/N=1024 (block 128)/neighbors (Wrap) 3.87 M allocs: 0.192 GB 3.88 M allocs: 0.192 GB 0.998
stencil/dagger/N=1024 (block 128)/update (+) 0.518 M allocs: 27.2 MB 0.518 M allocs: 27.2 MB 1
stencil/dagger/N=1024 (block 512)/alloc (neighbors Wrap) 0.316 M allocs: 18 MB 0.317 M allocs: 18 MB 0.998
stencil/dagger/N=1024 (block 512)/assign (const) 20.4 k allocs: 1.06 MB 20.5 k allocs: 1.07 MB 0.999
stencil/dagger/N=1024 (block 512)/multi-expr 0.0549 M allocs: 2.87 MB 0.0549 M allocs: 2.87 MB 0.999
stencil/dagger/N=1024 (block 512)/neighbors (Clamp) 0.211 M allocs: 10.7 MB 0.211 M allocs: 10.7 MB 1
stencil/dagger/N=1024 (block 512)/neighbors (Pad) 0.145 M allocs: 7.41 MB 0.145 M allocs: 7.41 MB 1
stencil/dagger/N=1024 (block 512)/neighbors (Reflect) 0.211 M allocs: 10.7 MB 0.211 M allocs: 10.7 MB 1
stencil/dagger/N=1024 (block 512)/neighbors (Wrap) 0.308 M allocs: 15.6 MB 0.309 M allocs: 15.6 MB 0.998
stencil/dagger/N=1024 (block 512)/update (+) 0.0344 M allocs: 1.8 MB 0.0345 M allocs: 1.8 MB 1
stencil/dagger/N=256 (block 128)/alloc (neighbors Wrap) 0.316 M allocs: 16.1 MB 0.317 M allocs: 16.1 MB 0.998
stencil/dagger/N=256 (block 128)/assign (const) 20.4 k allocs: 1.06 MB 20.4 k allocs: 1.07 MB 0.999
stencil/dagger/N=256 (block 128)/multi-expr 0.0549 M allocs: 2.87 MB 0.0549 M allocs: 2.87 MB 0.999
stencil/dagger/N=256 (block 128)/neighbors (Clamp) 0.211 M allocs: 10.7 MB 0.211 M allocs: 10.7 MB 0.999
stencil/dagger/N=256 (block 128)/neighbors (Pad) 0.145 M allocs: 7.4 MB 0.145 M allocs: 7.4 MB 1
stencil/dagger/N=256 (block 128)/neighbors (Reflect) 0.211 M allocs: 10.7 MB 0.211 M allocs: 10.7 MB 1
stencil/dagger/N=256 (block 128)/neighbors (Wrap) 0.308 M allocs: 15.5 MB 0.309 M allocs: 15.6 MB 0.998
stencil/dagger/N=256 (block 128)/update (+) 0.0344 M allocs: 1.8 MB 0.0344 M allocs: 1.8 MB 1
stencil/dagger/N=256 (block 256)/alloc (neighbors Wrap) 17.2 k allocs: 1.4 MB 17.2 k allocs: 1.4 MB 0.999
stencil/dagger/N=256 (block 256)/assign (const) 6.51 k allocs: 0.345 MB 6.51 k allocs: 0.345 MB 1
stencil/dagger/N=256 (block 256)/multi-expr 16.6 k allocs: 0.878 MB 16.6 k allocs: 0.878 MB 1
stencil/dagger/N=256 (block 256)/neighbors (Clamp) 13.8 k allocs: 0.733 MB 13.8 k allocs: 0.733 MB 1
stencil/dagger/N=256 (block 256)/neighbors (Pad) 13.7 k allocs: 0.732 MB 13.7 k allocs: 0.732 MB 1
stencil/dagger/N=256 (block 256)/neighbors (Reflect) 13.8 k allocs: 0.741 MB 13.8 k allocs: 0.741 MB 1
stencil/dagger/N=256 (block 256)/neighbors (Wrap) 13.7 k allocs: 0.726 MB 13.7 k allocs: 0.726 MB 1
stencil/dagger/N=256 (block 256)/update (+) 10.1 k allocs: 0.533 MB 10.1 k allocs: 0.533 MB 1
time_to_load 0.199 k allocs: 11.5 kB 0.199 k allocs: 11.5 kB 1

Plots

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

  • sparse/dagger/N=1024 (block 64)/cg solve (laplacian) (time): +66.5%
  • linalg/dagger/N=1024 (block 512)/syrk (A'*A) (time): +64.9%

Improvements

  • linalg/dagger/N=256 (block 128)/cholesky (time): -54.2%
Within noise (4 metric(s) past threshold but inside the ±spread; not counted)
  • linalg/dagger/N=1024 (block 512)/cholesky (time): 89.9%
  • linalg/dagger/N=1024 (block 128)/matvec (A*x) (time): 86.5%
  • array/dagger/N=256 (block 256)/alloc (rand) (time): -66.8%
  • linalg/dagger/N=256 (block 256)/cholesky (time): -69.5%

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

@jpsamaroo
jpsamaroo merged commit 184bab3 into master Sep 15, 2026
24 of 43 checks passed
@jpsamaroo
jpsamaroo deleted the jps/cuda-6 branch September 15, 2026 22:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant