Table of Contents
Fetching ...

AutoOverlap: Enabling Fine-Grained Overlap of Computation and Communication with Chunk-Based Scheduling

Xinwei Qiang, Yue Guan, Zhengding Hu, Yufei Ding, Adnan Aziz

TL;DR

AutoOverlap addresses the latency bottleneck of inter-device communication in multi-GPU workloads by enabling fine-grained intra-kernel overlap within a fused distributed kernel. It introduces a chunk-based communication abstraction and a source-to-source Triton compiler that aligns tile execution with chunk availability and maps transfers to diverse backends. The system supports manual, template, or synthesized schedules, performs inter- and intra-chunk autotuning, and integrates with PyTorch distributed runtimes. On open benchmarks, it achieves an average speedup of $1.3\times$ and up to $4.7\times$, outperforming both hand-tuned and other automatic distributed approaches.

Abstract

Communication has become a first-order bottleneck in large-cale GPU workloads, and existing distributed compilers address it mainly by overlapping whole compute and communication kernels at the stream level. This coarse granularity incurs extra kernel launches, forces device-wide synchronizations at kernel boundaries, and leaves substantial slack when the slowest tile or kernel stretches the communication tail. We present AutoOverlap, a compiler and runtime that enables automatic fine-grained overlap inside a single fused kernel. AutoOverlap introduces a communication chunk abstraction that decouples communication granularity from kernel structure and backend mechanisms, allowing chunk-level plans to be ported from existing distributed compilers, written directly by users, or instantiated from reusable templates. Given a local Triton kernel and a chunk schedule, AutoOverlap performs transformations to align computation with chunk availability. Implemented as a source-to-source compiler on Triton, AutoOverlap delivers an average end-to-end speedup of 1.3$\times$ and up to 4.7$\times$ on multi-GPU workloads.

AutoOverlap: Enabling Fine-Grained Overlap of Computation and Communication with Chunk-Based Scheduling

TL;DR

AutoOverlap addresses the latency bottleneck of inter-device communication in multi-GPU workloads by enabling fine-grained intra-kernel overlap within a fused distributed kernel. It introduces a chunk-based communication abstraction and a source-to-source Triton compiler that aligns tile execution with chunk availability and maps transfers to diverse backends. The system supports manual, template, or synthesized schedules, performs inter- and intra-chunk autotuning, and integrates with PyTorch distributed runtimes. On open benchmarks, it achieves an average speedup of and up to , outperforming both hand-tuned and other automatic distributed approaches.

Abstract

Communication has become a first-order bottleneck in large-cale GPU workloads, and existing distributed compilers address it mainly by overlapping whole compute and communication kernels at the stream level. This coarse granularity incurs extra kernel launches, forces device-wide synchronizations at kernel boundaries, and leaves substantial slack when the slowest tile or kernel stretches the communication tail. We present AutoOverlap, a compiler and runtime that enables automatic fine-grained overlap inside a single fused kernel. AutoOverlap introduces a communication chunk abstraction that decouples communication granularity from kernel structure and backend mechanisms, allowing chunk-level plans to be ported from existing distributed compilers, written directly by users, or instantiated from reusable templates. Given a local Triton kernel and a chunk schedule, AutoOverlap performs transformations to align computation with chunk availability. Implemented as a source-to-source compiler on Triton, AutoOverlap delivers an average end-to-end speedup of 1.3 and up to 4.7 on multi-GPU workloads.
Paper Structure (33 sections, 11 figures, 2 tables)

This paper contains 33 sections, 11 figures, 2 tables.

Figures (11)

  • Figure 1: Motivating example of AutoOverlap. Red numbers shows the direct improvements gained by fine-grained overlap over kernel-level overlap, while orange numbers show the additional improvements from the new design space enabled by AutoOverlap.
  • Figure 2: Motivation experiment results. (a) SM utilization under different GEMM sizes and tile sizes. (b) Performance comparison between a streamed GEMM kernel and a kernel-partitioned baseline. (c,d) Bandwidth of different communication backends under varying message sizes.
  • Figure 3: System overview of AutoOverlap.
  • Figure 4: Communication schedule abstraction. (a) and (b) illustrate the same point-to-point exchange expressed as push and pull variants, respectively. (c) shows a ring-based AllGather pattern. (d) represents a partition-based AllReduce schedule. (e) depicts a heterogeneous swizzled AllGather pattern that pipelines communication across multiple hierarchy levels.
  • Figure 5: Compilation pipeline. In this example, we show communication using specialized SM as an independent kernel synchronized with signals. It can also be a fused kernel depending on the communication backend.
  • ...and 6 more figures