Programming GPGPU Graph Applications with Linear Algebra Building Blocks
Programming GPGPU Graph Applications with Linear Algebra Building Blocks
复制标题
使用线性代数构建模块对 GPGPU 图形应用程序进行编程
DOI:
--
复制
发表时间:
2016
影响因子:
1.5
通讯作者:
S. Reinhardt
中科院分区:
文献类型:
--
作者:
Shuai Che;Bradford M. Beckmann;S. Reinhardt
Graph applications are common in scientific and enterprise computing. Recent research used graphics processing units (GPUs) to accelerate graph workloads. These applications tend to present characteristics that are challenging for SIMD execution. To achieve high performance, prior work studied individual graph problems, and designed device-specific algorithms and optimizations to achieve high performance. However, programmers have to expend significant manual effort, packing data and computation to make such solutions GPU-friendly. This usually is too complex for regular programmers, and the resultant implementations may not be portable and perform well across platforms. To address these concerns, we propose and implement a library of software building blocks with application examples, BelRed which allows programmers to build graph applications with ease. BelRed currently is built on top of the OpenCL™ framework and optimized for GPUs. It consists of fundamental linear-algebra building blocks necessary for graph processing. Developers can program graph algorithms with a set of key primitives. This paper introduces the API and presents several case studies on how to use the library for a variety of representative graph problems. We evaluate application performance on an AMD GPU and investigate optimization techniques to improve performance. We show that this framework is useful to provide satisfactory GPU acceleration of various graph applications and help reduce programming efforts significantly.