Spill code placement for SIMD machines

  • Authors:
  • Diogo Nunes Sampaio;Elie Gedeon;Fernando Magno Quintão Pereira;Sylvain Collange

  • Affiliations:
  • Departamento de Ciência da Computação, UFMG, Brazil;Departamento de Ciência da Computação, UFMG, Brazil;Departamento de Ciência da Computação, UFMG, Brazil;Departamento de Ciência da Computação, UFMG, Brazil

  • Venue:
  • SBLP'12 Proceedings of the 16th Brazilian conference on Programming Languages
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

The Single Instruction, Multiple Data (SIMD) execution model has been receiving renewed attention recently. This awareness stems from the rise of graphics processing units (GPUs) as a powerful alternative for parallel computing. Many compiler optimizations have been recently proposed for this hardware, but register allocation is a field yet to be explored. In this context, this paper describes a register spiller for SIMD machines that capitalizes on the opportunity to share identical data between threads. It provides two different benefits: first, it uses less memory, as more spilled values are shared among threads. Second, it improves the access times to spilled values. We have implemented our proposed allocator in the Ocelot open source compiler, and have been able to speedup the code produced by this framework by 21%. Although we have designed our algorithm on top of a linear scan register allocator, we claim that our ideas can be easily adapted to fit the necessities of other register allocators.