arXivDaily arXiv每日学术速递 周一至周五更新
arXiv周末暂无论文更新,休息一下吧,周末愉快~~
arXiv 1503.05694cs.AR
收藏

通过资源共享提高GPU性能

Improving GPU Performance Through Resource Sharing

Vishwesh Jatala, Jayvant Anantpur, Amey Karkare

摘要:

图形处理单元(GPU)由流多处理器(SM)组成,通过运行大量的线程和上下文切换来隐藏执行延迟,从而实现高吞吐量。线程块的数量,以及因此可以在SM上启动的线程的数量,取决于线程块的资源使用-例如寄存器的数量、共享内存的量。由于线程到SM的分配是在线程块粒度,因此一些资源可能没有完全用完,因此将被浪费。我们提出了一种共享SM资源的方法,通过启动更多的线程块来利用浪费的资源。我们证明了我们的方法的有效性,两个资源:寄存器共享,暂存器(共享内存)共享。我们进一步提出了隐藏长执行延迟的优化,从而减少了停滞周期的数量。我们在GPGPU-Sim模拟器中实现了我们的方法,并在来自4个不同基准套件的几个应用程序上进行了实验验证:GPGPU-Sim,Rodinia,CUDA-SDK和Parboil。我们观察到,通过寄存器共享,应用程序显示出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 several applications from 4 different benchmark suites: GPGPU-Sim, Rodinia, CUDA-SDK, and Parboil. We observed that with register sharing, applications show maximum improvement of 24%, and average improvement of 11%. With scratchpad sharing, we observed a maximum improvement of 30% and an average improvement of 12.5%.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑