PAW-ATM Panel

Julian Samaroo (MIT JuliaLab)

Who am I?

I am a Research Software Engineer at MIT's JuliaLab. I work 95% on the Julia language, with a focus on developing libraries for distributed, multi-threaded, and GPU paradigms. I built and maintain Julia's AMDGPU support, and currently focus on developing the Dagger.jl HPC library.

 

And yes, that is my Golden Retriever in the picture :)

My MPI+X Alternative:

  • Pure-Julia task parallelism library
  • Unified task API supports multiple high-level APIs (arrays, tables, graphs, streaming, data dependencies)
  • Supports multi-threading, multi-node, multi-GPU out of the box
  • Machine learning-based scheduler optimizes computational DAGs based on learned task behavior
  • Advanced data dependency system automatically parallelizes operations on overlapping data regions (like OpenMP's "task depend" on steroids)

Applications of Dagger.jl

  • Quantum Tensor Network Contraction (BSC)
  • HEP Streaming Framework (CERN)
  • Reinsurance Pricing Engine (Ark)
  • ...and more

Advantages

  • Removes cognitive burden of manual task scheduling and data transfers
  • No/minimal code changes to support different accelerators
  • Scales automatically to available hardware
  • Variety of built-in parallelized operations
  • Multiple APIs for different problems

Known Issues

  • Relatively high per-task overhead
  • Missing optimizations for NUMA, optimal scheduling, many small tasks, etc.
  • High memory allocations (count and size)
  • Missing extensive (necessary) docs for new users
  • Bus factor == 1 (approximately)