← back to projects

/// project

Asynchronous Task Runtime with Dependency Scheduling

Stanford CS149: Parallel Computing

  • C++
  • Multi-Threaded
  • Data Structure
  • Built a C++ task runtime supporting asynchronous bulk task launches and dependency-aware scheduling over directed acyclic graphs (DAGs), scaling to 2,000+ task launches.

  • Designed a fixed-size worker pool using \texttt{std::thread}, mutexes, and condition variables to safely coordinate shared scheduling state while eliminating busy waiting through sleep-based synchronization.

  • Implemented dependency tracking using an adjacency-list graph with per-task dependency counters, automatically promoting ready jobs from a waiting graph to a FIFO ready queue as predecessor tasks completed.

  • Achieved up to \textbf{9$\times$ speedup} on a 12-core Apple Silicon processor by enabling parallel execution of independent task graphs while distributing scheduler bookkeeping across worker threads.

Asynchronous Task Runtime with Dependency Scheduling · Shivu