Title
Profiling divergences in GPU applications.
Abstract
The increasing programmability and the high computational power of graphics processing units make them attractive to general purpose programming. However, taking full benefit of this execution environment is a challenging task. One of these challenges stems from divergences, a phenomenon that occurs when threads that execute in lock-step are forced to take different program paths because of branches in the code. In face of divergences, some threads will have to wait, idly, while their diverging siblings execute. Optimizing the code to avoid divergences is difficult because this task demands a deep understanding of programs that might be large and convoluted. To facilitate the detection of divergences, this paper introduces the divergence map, a data structure that indicates the location and the volume of divergences in a program. We build this map via dynamic profiling techniques, which we have implemented on top of an open source Parallel Thread Execution compiler. To illustrate the importance of the divergence map, we have used it to pinpoint the core regions that must be optimized in well-known public applications. By hand optimizing some applications, we have added 911% speedups onto kernels that have already gone through the sieve of many programmers. Copyright (c) 2012 John Wiley & Sons, Ltd.
Year
DOI
Venue
2013
10.1002/cpe.2853
CONCURRENCY AND COMPUTATION-PRACTICE & EXPERIENCE
Keywords
DocType
Volume
GPU programming,profiling,CUDA,divergence
Journal
25
Issue
ISSN
Citations 
SP6
1532-0626
5
PageRank 
References 
Authors
0.44
8
4
Name
Order
Citations
PageRank
Bruno Coutinho1714.66
Diogo Sampaio2483.84
Fernando Magno Quintão Pereira321620.03
Wagner Meira Jr42039188.06