A Framework for Fine-Grained Synchronization of Dependent GPU Kernels
Abhinav Jangda, Saeed Maleki, Maryam Mehri Dehnavi, Madan Musuvathi, Olli Saarikivi
TL;DR
This work tackles under-utilization in GPU inference caused by dependent tile-based computations across multiple kernels. It presents cuSync, a framework that synchronizes dependent tiles using streams, semaphores, and policies, plus cuSyncGen to auto-generate tile orders and synchronization policies. Empirical results across GPT-3, LLaMA, ResNet-38, and VGG-19 show meaningful end-to-end speedups, validating the approach's applicability to GeMM, Conv2D, and related tile-based kernels. The method offers practical impact by reducing inference times with modest software changes and broad applicability beyond GeMM to diverse tile-based ML workloads.
Abstract
Machine Learning (ML) models execute several parallel computations including Generalized Matrix Multiplication, Convolution, Dropout, etc. These computations are commonly executed on Graphics Processing Units (GPUs), by dividing the computation into independent processing blocks, known as tiles. Since the number of tiles are usually higher than the execution units of a GPU, tiles are executed on all execution units in one or more waves. However, the number of tiles is not always a multiple of the number of execution units. Thus, tiles executed in the final wave can under-utilize the GPU. To address this issue, we present cuSync, a framework for synchronizing dependent kernels using a user-defined fine-grained synchronization policy to improve the GPU utilization. cuSync synchronizes tiles instead of kernels, which allows executing independent tiles of dependent kernels concurrently. We also present a compiler to generate diverse fine-grained synchronization policies based on dependencies between kernels. Our experiments found that synchronizing CUDA kernels using cuSync reduces the inference times of four popular ML models: MegatronLM GPT-3 by up to 15%, LLaMA by up to 14%, ResNet-38 by up to 22%, and VGG-19 by up to 16% over several batch sizes.
