Dagger's Supported Features

July 19, 2024 ยท View on GitHub

This is the list of features that Dagger currently supports, as well as their status. If you find a bug in any of the "Great Support" features, please open an issue - for "Moderate Support" or "Poor Support", pull requests are always welcome!

Core

FeatureStatusNotesContact (JuliaLang Slack)
Multithreading:heavy_check_mark: Great Support@jpsamaroo
Distributed:warning: Moderate SupportThread-safety issues #101@jpsamaroo
Fault Tolerance:x: Poor SupportSometimes unreliable, may fail to recover in trivial cases@jpsamaroo
Checkpointing:warning: Moderate SupportInconvenient API@jpsamaroo

DArrays

FeatureStatusNotesContact (JuliaLang Slack)
Broadcast:heavy_check_mark: Great Support@jpsamaroo
Map/Reduce:heavy_check_mark: Great Support@jpsamaroo
Indexing/Slicing:x: Poor SupportIncorrect/broken slicing, poor performance@jpsamaroo
Matmul:warning: Moderate SupportSome incorrect boundschecks (for syrk)@Rabab53
Cholesky:warning: Moderate SupportMissing repartitioning support@Rabab53
Sparse Arrays:x: Poor SupportNeeds more supported operations and tests@jpsamaroo

GPUs

FeatureStatusNotesContact (JuliaLang Slack)
NVIDIA GPUs:heavy_check_mark: Great Support@jpsamaroo
AMD GPUs:heavy_check_mark: Great Support@jpsamaroo
Apple GPUs:warning: Moderate SupportMissing linalg operations@jpsamaroo or @Rabab53
Intel GPUs:warning: Moderate SupportMissing linalg operations@jpsamaroo or @Rabab53
KernelAbstractions Integration:warning: Moderate SupportMissing synchronization optimizations@jpsamaroo

Dagger's Roadmap and Todo List

This is the list of features and improvements that are planned for Dagger. Please consider contributing an improvement if you feel able to do so!

Interfaces

FeatureIssue/PR #Help WantedTesters WantedDetailsContact (JuliaLang Slack)
DGraphshttps://github.com/JuliaParallel/Dagger.jl/pull/448:heavy_check_mark::heavy_check_mark:Graphs.jl interface for Dagger-distributed graphs@jpsamaroo or @pszufe
Streaming Taskshttps://github.com/JuliaParallel/Dagger.jl/pull/463:heavy_check_mark::heavy_check_mark:Streaming task interface for Dagger@jpsamaroo, @JamesWrigley, or @Davide Ferretti
SPMDNone:heavy_check_mark::heavy_check_mark:SPMD interface (like MPI)@jpsamaroo
KernelAbstractions BackendNone:heavy_check_mark:N/AKA DaggerBackend for SPMD programming@jpsamaroo
EinsumNone:heavy_check_mark:N/AEinsum-notation operator for DArray@jpsamaroo

DArrays

FeatureIssue/PR #Help WantedTesters WantedDetailsContact (JuliaLang Slack)
Matmul (Sparse)https://github.com/JuliaParallel/Dagger.jl/pull/507 (jps/matmul-gpu-fixes):heavy_check_mark::heavy_check_mark:Switch from raw BLAS calls to generic_matmatmul!@jpsamaroo or @Rabab53
Matmul (GPU)https://github.com/JuliaParallel/Dagger.jl/pull/543 (jps/matmul-gpu-fixes):heavy_check_mark::heavy_check_mark:Implement GPU CI for matmul, fix any broken implementation details@jpsamaroo or @Rabab53
LU Factorizationrabab/lu:heavy_check_mark: Need pivoting impl.N/ALU factorization for DArray@Rabab53
QR Factorizationhttps://github.com/JuliaParallel/Dagger.jl/pull/529:warning: WIPN/AQR factorization for DArray@fda-tome
Triangular Solvetriangularsolve:heavy_check_mark: Need wire-up of LinearAlgebra APIN/ATriangular solve (A \ B) and ldiv for DArray@Rabab53
SVDNone:heavy_check_mark:N/ASVD for DArray@fda-tome or @Rabab53

Datadeps

FeatureIssue/PR #Help WantedTesters WantedDetailsContact (JuliaLang Slack)
Stencil HelperNone:heavy_check_mark:N/AHelper for stencil computations which lowers to Datadeps@jpsamaroo
MPI SupportNone:warning: WIP:heavy_check_mark:Datadeps support for automatic MPI usage@fda-tome or @jpsamaroo
Memory AwarenessNone:heavy_check_mark:N/ADatadeps support for memory awareness and OOM avoidance@fda-tome or @jpsamaroo
Mixed-Precision SupportNone:heavy_check_mark:N/ADatadeps support for automatic precision modification@Rabab53 or @jpsamaroo

GPUs

FeatureIssue/PR #Help WantedTesters WantedDetailsContact (JuliaLang Slack)
Extensive GPU CINone:heavy_check_mark:N/AMore extensive CI for GPU integrations@jpsamaroo
GPU Stream SchedulerNone:heavy_check_mark:N/AScheduler for assigning tasks to different streams on the same GPU device@jpsamaroo
KA Single-CPU BackendNone:heavy_check_mark:N/ANew KernelAbstractions backend for single-threaded CPU execution (helpful for performance of KA kernels in Dagger tasks@jpsamaroo
GraphCore IPU SupportNone:heavy_check_mark:N/AIPUToolkit support in Dagger@jpsamaroo or @giordano
Consuming DaggerGPUNone:heavy_check_mark:N/AMove DaggerGPU code and extensions into Dagger@jpsamaroo