Thread block compaction for efficient SIMT control flow


Manycore accelerators such as graphics processor units (GPUs) organize processing units into single-instruction, multiple data “cores” to improve throughput per unit hardware cost. Programming models for these accelerators encourage applications to run kernels with large groups of parallel scalar threads. The hardware groups these threads into warps/wavefronts and executes them in lockstep-dubbed single-instruction, multiple-thread (SIMT) by NVIDIA. While current GPUs employ a per-warp (or per-wavefront) stack to manage divergent control flow, it incurs decreased efficiency for applications with nested, data-dependent control flow. In this paper, we propose and evaluate the benefits of extending the sharing of resources in a block of warps, already used for scratchpad memory, to exploit control flow locality among threads (where such sharing may at first seem detrimental). In our proposal, warps within a thread block share a common block-wide stack for divergence handling. At a divergent branch, threads are compacted into new warps in hardware. Our simulation results show that this compaction mechanism provides an average speedup of 22% over a baseline per-warp, stack-based reconvergence mechanism, and 17% versus dynamic warp formation on a set of CUDA applications that suffer significantly from control flow divergence.

DOI: 10.1109/HPCA.2011.5749714

Extracted Key Phrases

18 Figures and Tables

Citations per Year

142 Citations

Semantic Scholar estimates that this publication has 142 citations based on the available data.

See our FAQ for additional information.

Cite this paper

@article{Fung2011ThreadBC, title={Thread block compaction for efficient SIMT control flow}, author={Wilson W. L. Fung and Tor M. Aamodt}, journal={2011 IEEE 17th International Symposium on High Performance Computer Architecture}, year={2011}, pages={25-36} }