|Improving SIMT Efficiency of Global Rendering Algorithms with Architectural Support for Dynamic Micro-Kernels
|Steffen, M., and J. Zambreno
|Proceedings of the International Symposium on Microarchitecture (MICRO)
Wide Single Instruction, Multiple Thread (SIMT) architectures often require a static allocation of thread groups that are executed in lockstep throughout the entire application kernel. Individual thread branching is supported by executing all control ﬂow paths for threads in a thread group and only committing the results of threads on the current control path. While convergence algorithms are used to maximize processor efﬁciency during branching operations, applications requiring complex control ﬂow often result in low processor efﬁciency due to the length and quantity of control paths. Global rendering algorithms are an example of a class of application that can be accelerated using a large number of independent parallel threads that each require complex control ﬂow, resulting in comparatively low efﬁciency on SIMT processors. To improve processor utilization for global rendering algorithms, we introduce a SIMT architecture that allows for threads to be created dynamically at runtime. Large application kernels are broken down into smaller code blocks we call µ-kernels that dynamically created threads can execute. These runtime µ-kernels allow for the removal of branching statements that would cause divergence within a thread group, and result in new threads being created and grouped with threads beginning execution of the same µ-kernel. In our evaluation of SIMT processor efﬁciency for a global rendering algorithms, dynamic µ-kernels improved processor performance by an average of 1.4x.