Skip to content

DArray/QR: Pick better ib and p defaults - #725

Merged
jpsamaroo merged 1 commit into
masterfrom
jps/qr-opt
Jul 25, 2026
Merged

DArray/QR: Pick better ib and p defaults#725
jpsamaroo merged 1 commit into
masterfrom
jps/qr-opt

Conversation

@jpsamaroo

Copy link
Copy Markdown
Member

Written by Cursor Grok

@github-actions

Copy link
Copy Markdown
Contributor

Dagger benchmarks: dirty vs master

master dirty master / dirty
array/dagger/N=1024 (block 512)/add (X + X) 4.1 ± 0.098 ms 4.2 ± 0.46 ms 0.978 ± 0.11
array/dagger/N=1024 (block 512)/alloc (rand) 2.84 ± 0.67 ms 3.7 ± 0.25 ms 0.768 ± 0.19
array/dagger/N=1024 (block 512)/broadcast (X .+ 1) 2.85 ± 0.044 ms 2.99 ± 0.21 ms 0.953 ± 0.067
array/dagger/N=1024 (block 512)/map (sin.(X)) 7.26 ± 0.082 ms 7.45 ± 0.34 ms 0.974 ± 0.046
array/dagger/N=1024 (block 512)/norm 1.16 ± 0.027 ms 1.35 ± 0.1 ms 0.863 ± 0.069
array/dagger/N=1024 (block 512)/reduce (sum) 2.41 ± 0.21 ms 2.66 ± 0.094 ms 0.906 ± 0.086
array/dagger/N=1024 (block 512)/transpose (permutedims) 7 ± 1.1 ms 5.52 ± 2.1 ms 1.27 ± 0.52
array/dagger/N=256 (block 256)/add (X + X) 1.32 ± 0.12 ms 1.44 ± 0.21 ms 0.917 ± 0.16
array/dagger/N=256 (block 256)/alloc (rand) 1.18 ± 0.35 ms 0.935 ± 0.23 ms 1.27 ± 0.49
array/dagger/N=256 (block 256)/broadcast (X .+ 1) 0.843 ± 0.43 ms 0.917 ± 0.21 ms 0.919 ± 0.51
array/dagger/N=256 (block 256)/map (sin.(X)) 1.39 ± 0.21 ms 1.3 ± 0.041 ms 1.07 ± 0.17
array/dagger/N=256 (block 256)/norm 0.479 ± 0.46 ms 0.545 ± 0.029 ms 0.878 ± 0.85
array/dagger/N=256 (block 256)/reduce (sum) 1.3 ± 0.15 ms 1.56 ± 0.33 ms 0.835 ± 0.2
array/dagger/N=256 (block 256)/transpose (permutedims) 1.12 ± 0.015 ms 1.18 ± 0.24 ms 0.949 ± 0.19
linalg/dagger/N=1024 (block 512)/cholesky 22.5 ± 2 ms 22.5 ± 1.2 ms 0.999 ± 0.1
linalg/dagger/N=1024 (block 512)/lu 0.047 ± 0.0017 s 0.0463 ± 0.0008 s 1.01 ± 0.04
linalg/dagger/N=1024 (block 512)/matmul (A*A) 0.056 ± 0.0048 s 0.0513 ± 0.0066 s 1.09 ± 0.17
linalg/dagger/N=1024 (block 512)/matvec (A*x) 2.88 ± 0.017 ms 2.99 ± 0.14 ms 0.962 ± 0.045
linalg/dagger/N=1024 (block 512)/qr 0.37 ± 0.021 s 0.115 ± 0.0078 s 3.21 ± 0.28
linalg/dagger/N=1024 (block 512)/solve (A\b via lu) 0.0531 ± 0.0015 s 0.0547 ± 0.00055 s 0.972 ± 0.029
linalg/dagger/N=1024 (block 512)/syrk (A'*A) 0.0335 ± 0.0015 s 0.0343 ± 0.0034 s 0.977 ± 0.1
linalg/dagger/N=256 (block 256)/cholesky 3.17 ± 1 ms 3.17 ± 0.46 ms 1 ± 0.35
linalg/dagger/N=256 (block 256)/lu 4.13 ± 0.31 ms 4.81 ± 0.65 ms 0.859 ± 0.13
linalg/dagger/N=256 (block 256)/matmul (A*A) 2.64 ± 0.1 ms 2.43 ± 0.42 ms 1.08 ± 0.19
linalg/dagger/N=256 (block 256)/matvec (A*x) 1.55 ± 0.49 ms 1.56 ± 0.12 ms 0.995 ± 0.33
linalg/dagger/N=256 (block 256)/qr 7.24 ± 0.057 ms 5.48 ± 0.6 ms 1.32 ± 0.15
linalg/dagger/N=256 (block 256)/solve (A\b via lu) 9.87 ± 0.92 ms 9.64 ± 2.1 ms 1.02 ± 0.24
linalg/dagger/N=256 (block 256)/syrk (A'*A) 3.05 ± 0.056 ms 4.1 ± 0.88 ms 0.744 ± 0.16
stencil/dagger/N=1024 (block 512)/alloc (neighbors Wrap) 22.7 ± 2.7 ms 24.6 ± 3.6 ms 0.92 ± 0.17
stencil/dagger/N=1024 (block 512)/assign (const) 1.37 ± 0.046 ms 1.49 ± 0.071 ms 0.921 ± 0.054
stencil/dagger/N=1024 (block 512)/multi-expr 3.78 ± 0.41 ms 3.72 ± 0.45 ms 1.02 ± 0.17
stencil/dagger/N=1024 (block 512)/neighbors (Clamp) 22.9 ± 2 ms 24.6 ± 1.7 ms 0.931 ± 0.1
stencil/dagger/N=1024 (block 512)/neighbors (Pad) 23.8 ± 0.36 ms 25.1 ± 0.47 ms 0.948 ± 0.023
stencil/dagger/N=1024 (block 512)/neighbors (Reflect) 24 ± 0.93 ms 24.4 ± 0.59 ms 0.986 ± 0.045
stencil/dagger/N=1024 (block 512)/neighbors (Wrap) 24 ± 1.3 ms 23 ± 2.1 ms 1.05 ± 0.11
stencil/dagger/N=1024 (block 512)/update (+) 2.63 ± 0.19 ms 2.7 ± 0.61 ms 0.972 ± 0.23
stencil/dagger/N=256 (block 256)/alloc (neighbors Wrap) 4.86 ± 0.62 ms 5.25 ± 1.5 ms 0.925 ± 0.29
stencil/dagger/N=256 (block 256)/assign (const) 0.698 ± 0.084 ms 0.723 ± 0.041 ms 0.966 ± 0.13
stencil/dagger/N=256 (block 256)/multi-expr 1.35 ± 0.076 ms 1.48 ± 0.0094 ms 0.912 ± 0.051
stencil/dagger/N=256 (block 256)/neighbors (Clamp) 4.58 ± 0.13 ms 4.81 ± 0.26 ms 0.952 ± 0.059
stencil/dagger/N=256 (block 256)/neighbors (Pad) 4.57 ± 0.11 ms 4.89 ± 0.31 ms 0.933 ± 0.064
stencil/dagger/N=256 (block 256)/neighbors (Reflect) 4.61 ± 0.19 ms 4.46 ± 0.099 ms 1.03 ± 0.048
stencil/dagger/N=256 (block 256)/neighbors (Wrap) 4.85 ± 0.29 ms 4.76 ± 0.27 ms 1.02 ± 0.084
stencil/dagger/N=256 (block 256)/update (+) 0.815 ± 0.021 ms 0.864 ± 0.037 ms 0.943 ± 0.047
time_to_load 1.03 ± 0.0041 s 1.03 ± 0.0022 s 1 ± 0.0046

Plots

⚠️ Regressions (> 25.0%)

  • linalg/dagger/N=256 (block 256)/syrk (A'*A): +34.3%
  • array/dagger/N=1024 (block 512)/alloc (rand): +30.2%

Improvements (> 25.0% faster)

  • linalg/dagger/N=1024 (block 512)/qr: -68.9%

Full results and plots (download the benchmark-results artifact).

@jpsamaroo
jpsamaroo merged commit 475380e into master Jul 25, 2026
23 of 36 checks passed
@jpsamaroo
jpsamaroo deleted the jps/qr-opt branch July 25, 2026 21:25
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