Improving GPU Performance Through Resource Sharing

Improving GPU Performance Through Resource Sharing
复制标题

DOI:
10.1145/2907294.2907298
复制
发表时间:
2015-03
期刊:
Proceedings of the 25th ACM International Symposium on High-Performance Parallel and Distributed Computing
影响因子:
--
通讯作者:
Vishwesh Jatala;Jayvant Anantpur;Amey Karkare
Vishwesh Jatala;Jayvant Anantpur;Amey Karkare
中科院分区:
其他
文献类型:
--
作者:
Vishwesh Jatala;Jayvant Anantpur;Amey Karkare

文献摘要

被引文献

相似文献

由流多处理器(SM)组成的图形处理单元(GPU)通过运行大量线程和它们之间的上下文切换来隐藏执行延迟,从而实现高吞吐量。线程块的数量以及因此可以在SM上启动的线程数量取决于资源使用情况--例如寄存器数量、共享内存量--线程块的数量。由于对SM的线程分配是以线程块粒度进行的,因此一些资源可能没有完全用完,因此将被浪费。我们提出了一种共享SM资源的方法,通过启动更多的线程块来利用浪费的资源。我们展示了我们的方法在两种资源上的有效性:寄存器共享和暂存(共享内存)共享。我们进一步提出了隐藏长执行延迟的优化方案,从而减少了停顿周期的数量。我们在GPGPU-Sim模拟器上实现了我们的方法,并在GPGPU-Sim、Rodinia、CUDA-SDK和Parboil 4个不同基准测试套件的19个应用程序上进行了实验验证。我们观察到,未充分利用寄存器资源的应用程序表现出24%的最大性能提升和11%的平均性能提升。类似地,未充分利用便签本资源的应用程序显示出30%的最大性能提升和12.5%的平均性能提升。其余的应用程序不会浪费任何资源,其执行情况与基准方法类似。
Graphics Processing Units (GPUs) consisting of Streaming Multiprocessors (SMs) achieve high throughput by running a large number of threads and context switching among them to hide execution latencies. The number of thread blocks, and hence the number of threads that can be launched on an SM, depends on the resource usage--e.g. number of registers, amount of shared memory--of the thread blocks. Since the allocation of threads to an SM is at the thread block granularity, some of the resources may not be used up completely and hence will be wasted. We propose an approach that shares the resources of SM to utilize the wasted resources by launching more thread blocks. We show the effectiveness of our approach for two resources: register sharing, and scratchpad (shared memory) sharing. We further propose optimizations to hide long execution latencies, thus reducing the number of stall cycles. We implemented our approach in GPGPU-Sim simulator and experimentally validated it on 19 applications from 4 different benchmark suites: GPGPU-Sim, Rodinia, CUDA-SDK, and Parboil. We observed that applications that underutilize register resource show a maximum improvement of 24% and an average improvement of 11% with register sharing. Similarly, the applications that underutilize scratchpad resource show a maximum improvement of 30% and an average improvement of 12.5% with scratchpad sharing. The remaining applications, which do not waste any resources, perform similar to the baseline approach.