Skip to content

datadeps: Parallelize analysis and scheduling via hierarchical scheduling#717

Draft
jpsamaroo wants to merge 11 commits into
masterfrom
jps/datadeps-hierarchical
Draft

datadeps: Parallelize analysis and scheduling via hierarchical scheduling#717
jpsamaroo wants to merge 11 commits into
masterfrom
jps/datadeps-hierarchical

Conversation

@jpsamaroo

Copy link
Copy Markdown
Member

This allows Datadeps analysis and scheduling (ordinarily sequential operations) to be parallelized by multiple threads and/or multiple workers, greatly improving performance and scalability.

Written by Claude

@github-actions

github-actions Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Dagger benchmarks: dirty vs master

master dirty master / dirty
array/dagger/N=1024 (block 512)/add (X + X) 10.4 ± 0.25 ms
array/dagger/N=1024 (block 512)/alloc (rand) 4.26 ± 0.18 ms
array/dagger/N=1024 (block 512)/broadcast (X .+ 1) 7.59 ± 0.71 ms
array/dagger/N=1024 (block 512)/map (sin.(X)) 11.4 ± 0.6 ms
array/dagger/N=1024 (block 512)/norm 3.8 ± 0.23 ms
array/dagger/N=1024 (block 512)/reduce (sum) 7.23 ± 0.74 ms
array/dagger/N=1024 (block 512)/transpose (permutedims) 9.35 ± 2.1 ms
array/dagger/N=256 (block 256)/add (X + X) 3.03 ± 0.65 ms
array/dagger/N=256 (block 256)/alloc (rand) 1.16 ± 0.22 ms
array/dagger/N=256 (block 256)/broadcast (X .+ 1) 3.28 ± 0.18 ms
array/dagger/N=256 (block 256)/map (sin.(X)) 3.5 ± 0.12 ms
array/dagger/N=256 (block 256)/norm 1.95 ± 0.028 ms
array/dagger/N=256 (block 256)/reduce (sum) 4.09 ± 0.63 ms
array/dagger/N=256 (block 256)/transpose (permutedims) 2.41 ± 0.11 ms
linalg/dagger/N=1024 (block 512)/cholesky 31.5 ± 1.3 ms
linalg/dagger/N=1024 (block 512)/lu 7.65 s
linalg/dagger/N=1024 (block 512)/matmul (A*A) 0.0585 ± 0.0069 s
linalg/dagger/N=1024 (block 512)/matvec (A*x) 9.34 ± 0.79 ms
linalg/dagger/N=1024 (block 512)/qr 0.381 ± 0.0033 s
linalg/dagger/N=1024 (block 512)/solve (A\b via lu) 10.9 s
linalg/dagger/N=1024 (block 512)/syrk (A'*A) 0.0439 ± 0.0052 s
linalg/dagger/N=256 (block 256)/cholesky 6.43 ± 2.3 ms
linalg/dagger/N=256 (block 256)/lu 1.31 ± 0.02 s
linalg/dagger/N=256 (block 256)/matmul (A*A) 3.91 ± 0.038 ms
linalg/dagger/N=256 (block 256)/matvec (A*x) 3.63 ± 0.49 ms
linalg/dagger/N=256 (block 256)/qr 11.1 ± 0.9 ms
linalg/dagger/N=256 (block 256)/solve (A\b via lu) 2.23 ± 0.018 s
linalg/dagger/N=256 (block 256)/syrk (A'*A) 6.34 ± 0.87 ms
stencil/dagger/N=1024 (block 512)/alloc (neighbors Wrap) 0.0517 ± 0.0023 s
stencil/dagger/N=1024 (block 512)/assign (const) 4 ± 0.3 ms
stencil/dagger/N=1024 (block 512)/multi-expr 10.6 ± 1.3 ms
stencil/dagger/N=1024 (block 512)/neighbors (Clamp) 0.0557 ± 0.0027 s
stencil/dagger/N=1024 (block 512)/neighbors (Pad) 0.101 ± 0.011 s
stencil/dagger/N=1024 (block 512)/neighbors (Reflect) 0.0922 ± 0.012 s
stencil/dagger/N=1024 (block 512)/neighbors (Wrap) 0.092 ± 0.016 s
stencil/dagger/N=1024 (block 512)/update (+) 6.08 ± 0.14 ms
stencil/dagger/N=256 (block 256)/alloc (neighbors Wrap) 14.4 ± 0.66 ms
stencil/dagger/N=256 (block 256)/assign (const) 2.51 ± 0.15 ms
stencil/dagger/N=256 (block 256)/multi-expr 4.85 ± 0.27 ms
stencil/dagger/N=256 (block 256)/neighbors (Clamp) 13.2 ± 0.23 ms
stencil/dagger/N=256 (block 256)/neighbors (Pad) 15.9 ± 0.23 ms
stencil/dagger/N=256 (block 256)/neighbors (Reflect) 15.4 ± 0.12 ms
stencil/dagger/N=256 (block 256)/neighbors (Wrap) 15.7 ± 0.67 ms
stencil/dagger/N=256 (block 256)/update (+) 2.65 ± 1 ms
time_to_load 0.985 ± 0.0068 s 1.02 ± 0.013 s 0.961 ± 0.014

No regressions beyond 25.0% 🎉

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

@jpsamaroo jpsamaroo force-pushed the jps/datadeps-hierarchical branch from 7ee4270 to 1066d30 Compare July 11, 2026 19:16
@jpsamaroo jpsamaroo marked this pull request as draft July 11, 2026 19:32
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