当前位置: X-MOL 学术ACM Trans. Archit. Code Optim. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Efficient Nearest-Neighbor Data Sharing in GPUs
ACM Transactions on Architecture and Code Optimization ( IF 1.5 ) Pub Date : 2020-12-30 , DOI: 10.1145/3429981
Negin Nematollahi 1 , Mohammad Sadrosadati 2 , Hajar Falahati 2 , Marzieh Barkhordar 1 , Mario Paulo Drumond 3 , Hamid Sarbazi-Azad 4 , Babak Falsafi 3
Affiliation  

Stencil codes (a.k.a. nearest-neighbor computations) are widely used in image processing, machine learning, and scientific applications. Stencil codes incur nearest-neighbor data exchange because the value of each point in the structured grid is calculated as a function of its value and the values of a subset of its nearest-neighbor points. When running on Graphics Processing Unit (GPUs), stencil codes exhibit a high degree of data sharing between nearest-neighbor threads. Sharing is typically implemented through shared memories, shuffle instructions, and on-chip caches and often incurs performance overheads due to the redundancy in memory accesses. In this article, we propose Neighbor Data (NeDa), a direct nearest-neighbor data sharing mechanism that uses two registers embedded in each streaming processor (SP) that can be accessed by nearest-neighbor SP cores. The registers are compiler-allocated and serve as a data exchange mechanism to eliminate nearest-neighbor shared accesses. NeDa is embedded carefully with local wires between SP cores so as to minimize the impact on density. We place and route NeDa in an open-source GPU and show a small area overhead of 1.3%. The cycle-accurate simulation indicates an average performance improvement of 21.8% and power reduction of up to 18.3% for stencil codes in General-Purpose Graphics Processing Unit (GPGPU) standard benchmark suites. We show that NeDa’s performance is within 13.2% of an ideal GPU with no overhead for nearest-neighbor data exchange.

中文翻译:

GPU 中的高效最近邻数据共享

模板代码(又名最近邻计算)广泛用于图像处理、机器学习和科学应用。模板代码会导致最近邻数据交换,因为结构化网格中每个点的值是根据其值及其最近邻点子集的值计算的。在图形处理单元 (GPU) 上运行时,模板代码在最近邻线程之间表现出高度的数据共享。共享通常通过共享内存、混洗指令和片上缓存实现,并且由于内存访问的冗余性,通常会产生性能开销。在本文中,我们提出了邻居数据(NeDa),一种直接最近邻数据共享机制,它使用嵌入在每个流处理器 (SP) 中的两个寄存器,最近邻 SP 内核可以访问这些寄存器。这些寄存器是编译器分配的,并作为一种数据交换机制来消除最近邻共享访问。NeDa 与 SP 核心之间的局部导线仔细嵌入,以尽量减少对密度的影响。我们在开源 GPU 中放置和路由 NeDa,并显示 1.3% 的小面积开销。周期精确的模拟表明,通用图形处理单元 (GPGPU) 标准基准套件中模板代码的平均性能提高了 21.8%,功耗降低了高达 18.3%。我们表明,NeDa 的性能在理想 GPU 的 13.2% 以内,并且没有最近邻数据交换的开销。这些寄存器是编译器分配的,并作为一种数据交换机制来消除最近邻共享访问。NeDa 与 SP 核心之间的局部导线仔细嵌入,以尽量减少对密度的影响。我们在开源 GPU 中放置和路由 NeDa,并显示 1.3% 的小面积开销。周期精确的模拟表明,通用图形处理单元 (GPGPU) 标准基准套件中模板代码的平均性能提高了 21.8%,功耗降低了高达 18.3%。我们表明,NeDa 的性能在理想 GPU 的 13.2% 以内,并且没有最近邻数据交换的开销。这些寄存器是编译器分配的,并作为一种数据交换机制来消除最近邻共享访问。NeDa 与 SP 核心之间的局部导线仔细嵌入,以尽量减少对密度的影响。我们在开源 GPU 中放置和路由 NeDa,并显示 1.3% 的小面积开销。周期精确的模拟表明,通用图形处理单元 (GPGPU) 标准基准套件中模板代码的平均性能提高了 21.8%,功耗降低了高达 18.3%。我们表明,NeDa 的性能在理想 GPU 的 13.2% 以内,并且没有最近邻数据交换的开销。我们在开源 GPU 中放置和路由 NeDa,并显示 1.3% 的小面积开销。周期精确的模拟表明,通用图形处理单元 (GPGPU) 标准基准套件中模板代码的平均性能提高了 21.8%,功耗降低了高达 18.3%。我们表明,NeDa 的性能在理想 GPU 的 13.2% 以内,并且没有最近邻数据交换的开销。我们在开源 GPU 中放置和路由 NeDa,并显示 1.3% 的小面积开销。周期精确的模拟表明,通用图形处理单元 (GPGPU) 标准基准套件中模板代码的平均性能提高了 21.8%,功耗降低了高达 18.3%。我们表明,NeDa 的性能在理想 GPU 的 13.2% 以内,并且没有最近邻数据交换的开销。
更新日期:2020-12-30
down
wechat
bug