Abstract: Dynamic task scheduling is vital for optimizing performance and resource utilization, particularly in heterogeneous computing environments. The LLVM-based Julia programming language offers a unique opportunity for developing efficient task-based runtime systems. This paper introduces the Dagger. jl package, a Julia-native implementation for dynamic task scheduling with data dependency awareness. We design a high-performance scheduler that leverages Julia's type inference capabilities to support various computational tasks and data types. Our approach provides an unified API, facilitating the development and deployment of applications across different architectures. We evaluate the performance and overhead of Dagger through several tiled dense linear algebra computations on shared memory systems. Notably, our results show that Dagger with data dependency awareness outperforms other parallel paradigms in Julia and achieves performance comparable to vendor-optimized operations. Dagger also leverages the implementation of the QR communication-avoiding algorithm, delivering significant performance improvements, and highlighting its potential for scalable and efficient parallel computing.
Loading