Skip to content

DArray: Add SVD algorithm#716

Merged
jpsamaroo merged 6 commits into
masterfrom
jps/svd
Jul 14, 2026
Merged

DArray: Add SVD algorithm#716
jpsamaroo merged 6 commits into
masterfrom
jps/svd

Conversation

@jpsamaroo

Copy link
Copy Markdown
Member

Written by Claude Opus and Sonnet

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Dagger benchmarks: dirty vs master

master dirty master / dirty
array/dagger/N=1024 (block 512)/add (X + X) 3.66 ± 0.11 ms 3.82 ± 0.23 ms 0.959 ± 0.065
array/dagger/N=1024 (block 512)/alloc (rand) 3.25 ± 0.82 ms 3.19 ± 0.1 ms 1.02 ± 0.26
array/dagger/N=1024 (block 512)/broadcast (X .+ 1) 2.36 ± 0.079 ms 2.41 ± 0.045 ms 0.979 ± 0.038
array/dagger/N=1024 (block 512)/map (sin.(X)) 5.06 ± 0.18 ms 5.15 ± 0.12 ms 0.983 ± 0.042
array/dagger/N=1024 (block 512)/norm 1.19 ± 0.13 ms 1.22 ± 0.33 ms 0.98 ± 0.28
array/dagger/N=1024 (block 512)/reduce (sum) 2.44 ± 0.82 ms 2.04 ± 0.12 ms 1.2 ± 0.41
array/dagger/N=1024 (block 512)/transpose (permutedims) 4.79 ± 0.45 ms 4.16 ± 0.48 ms 1.15 ± 0.17
array/dagger/N=256 (block 256)/add (X + X) 1.3 ± 0.17 ms 1.4 ± 0.43 ms 0.928 ± 0.31
array/dagger/N=256 (block 256)/alloc (rand) 1.37 ± 0.057 ms 1.35 ± 0.13 ms 1.02 ± 0.11
array/dagger/N=256 (block 256)/broadcast (X .+ 1) 0.527 ± 0.069 ms 0.559 ± 0.11 ms 0.943 ± 0.22
array/dagger/N=256 (block 256)/map (sin.(X)) 1.03 ± 0.15 ms 0.956 ± 0.11 ms 1.08 ± 0.2
array/dagger/N=256 (block 256)/norm 0.543 ± 0.12 ms 0.51 ± 0.06 ms 1.07 ± 0.27
array/dagger/N=256 (block 256)/reduce (sum) 1.02 ± 0.23 ms 1.18 ± 0.35 ms 0.864 ± 0.33
array/dagger/N=256 (block 256)/transpose (permutedims) 0.984 ± 0.094 ms 0.859 ± 0.14 ms 1.15 ± 0.21
linalg/dagger/N=1024 (block 512)/cholesky 16.8 ± 0.44 ms 23.4 ± 3.4 ms 0.718 ± 0.11
linalg/dagger/N=1024 (block 512)/lu 1.2 ± 0.013 s 1.23 ± 0.011 s 0.976 ± 0.014
linalg/dagger/N=1024 (block 512)/matmul (A*A) 30.2 ± 3.3 ms 29.7 ± 2.2 ms 1.02 ± 0.13
linalg/dagger/N=1024 (block 512)/matvec (A*x) 2.86 ± 0.16 ms 2.91 ± 0.38 ms 0.982 ± 0.14
linalg/dagger/N=1024 (block 512)/qr 0.189 ± 0.018 s 0.18 ± 0.0044 s 1.05 ± 0.1
linalg/dagger/N=1024 (block 512)/solve (A\b via lu) 1.9 ± 0.0039 s 1.98 ± 0.028 s 0.96 ± 0.014
linalg/dagger/N=1024 (block 512)/syrk (A'*A) 28.7 ± 3.5 ms 0.033 ± 0.0041 s 0.872 ± 0.15
linalg/dagger/N=256 (block 256)/cholesky 2.73 ± 1.2 ms 2.75 ± 0.27 ms 0.992 ± 0.45
linalg/dagger/N=256 (block 256)/lu 0.171 ± 0.04 s 0.167 ± 0.01 s 1.03 ± 0.25
linalg/dagger/N=256 (block 256)/matmul (A*A) 2.22 ± 0.11 ms 2.34 ± 0.48 ms 0.95 ± 0.2
linalg/dagger/N=256 (block 256)/matvec (A*x) 1.41 ± 1 ms 1.33 ± 0.096 ms 1.06 ± 0.76
linalg/dagger/N=256 (block 256)/qr 5.35 ± 0.51 ms 5.1 ± 0.85 ms 1.05 ± 0.2
linalg/dagger/N=256 (block 256)/solve (A\b via lu) 0.362 ± 0.032 s 0.37 ± 0.023 s 0.98 ± 0.11
linalg/dagger/N=256 (block 256)/syrk (A'*A) 3.95 ± 0.23 ms 4.85 ± 2.7 ms 0.815 ± 0.46
stencil/dagger/N=1024 (block 512)/alloc (neighbors Wrap) 21.6 ± 5.4 ms 22.1 ± 4.1 ms 0.977 ± 0.31
stencil/dagger/N=1024 (block 512)/assign (const) 1.76 ± 0.043 ms 1.68 ± 0.18 ms 1.05 ± 0.11
stencil/dagger/N=1024 (block 512)/multi-expr 3.94 ± 0.13 ms 3.61 ± 0.16 ms 1.09 ± 0.059
stencil/dagger/N=1024 (block 512)/neighbors (Clamp) 20.2 ± 5.6 ms 22.4 ± 1.7 ms 0.905 ± 0.26
stencil/dagger/N=1024 (block 512)/neighbors (Pad) 23 ± 2.4 ms 19 ± 0.63 ms 1.21 ± 0.13
stencil/dagger/N=1024 (block 512)/neighbors (Reflect) 20.8 ± 3.3 ms 21.7 ± 6.1 ms 0.96 ± 0.31
stencil/dagger/N=1024 (block 512)/neighbors (Wrap) 22.6 ± 1.8 ms 20.4 ± 4.5 ms 1.11 ± 0.26
stencil/dagger/N=1024 (block 512)/update (+) 1.93 ± 0.031 ms 1.94 ± 0.11 ms 0.995 ± 0.057
stencil/dagger/N=256 (block 256)/alloc (neighbors Wrap) 4.51 ± 0.33 ms 4.53 ± 0.55 ms 0.995 ± 0.14
stencil/dagger/N=256 (block 256)/assign (const) 0.708 ± 0.064 ms 0.69 ± 0.36 ms 1.03 ± 0.54
stencil/dagger/N=256 (block 256)/multi-expr 1.45 ± 0.093 ms 1.4 ± 0.089 ms 1.03 ± 0.093
stencil/dagger/N=256 (block 256)/neighbors (Clamp) 4.3 ± 0.14 ms 3.93 ± 0.48 ms 1.09 ± 0.14
stencil/dagger/N=256 (block 256)/neighbors (Pad) 3.6 ± 0.11 ms 3.9 ± 0.32 ms 0.921 ± 0.081
stencil/dagger/N=256 (block 256)/neighbors (Reflect) 3.97 ± 0.59 ms 3.98 ± 0.35 ms 0.997 ± 0.17
stencil/dagger/N=256 (block 256)/neighbors (Wrap) 3.98 ± 0.25 ms 3.89 ± 0.66 ms 1.02 ± 0.19
stencil/dagger/N=256 (block 256)/update (+) 1.01 ± 0.27 ms 0.809 ± 0.081 ms 1.25 ± 0.35
time_to_load 0.787 ± 0.011 s 0.804 ± 0.011 s 0.978 ± 0.019

Plots

⚠️ Regressions (> 25.0%)

  • linalg/dagger/N=1024 (block 512)/cholesky: +39.3%

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

@jpsamaroo jpsamaroo force-pushed the jps/svd branch 2 times, most recently from 6f49fdc to 7c05015 Compare July 13, 2026 20:23
@jpsamaroo jpsamaroo merged commit 17dcace into master Jul 14, 2026
5 of 19 checks passed
@jpsamaroo jpsamaroo deleted the jps/svd branch July 14, 2026 14:34
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