2018/02/24 by Wei-Yu Chen, Guei-Yuan Lueh, Pratik Ashar +2 · 1 citation
Computer Science · #Parallel Computing and Optimization Techniques #Advanced Data Storage Technologies #Embedded Systems Design Techniques #Computer science #Register allocation #Allocator #Processor register #Parallel computing #Control flow #Compiler #Register file #Overhead (engineering) #Graphics #SIMD #Instruction set #Byte #Operating system #Programming language #Memory address
paper · doi:10.1145/3168806
openalex publication_date 2018/02/24 · openalex created_date 2025/10/10 · openalex updated_date 2026/07/30
Register allocation is a well-studied problem, but surprisingly little work has been published on assigning registers for GPU architectures. In this paper we present the register allocator in the production compiler for Intel HD and Iris Graphics. Intel GPUs feature a large byte-addressable register file organized into banks, an expressive instruction set that supports variable SIMD-sizes and divergent control flow, and high spill overhead due to relatively long memory latencies. These distinctive characteristics impose challenges for register allocation, as input programs may have arbitrarily-sized variables, partial updates, and complex control flow. Not only should the allocator make a program spill-free, but it must also reduce the number of register bank conflicts and anti-dependencies. Since compilation occurs in a JIT environment, the allocator also needs to incur little overhead.