面向图DSL的多种加速器代码生成
Code Generation for a Variety of Accelerators for a Graph DSL
AI总结:
本文提出基于图DSL StarPlat的代码生成方法,允许领域专家编写近顺序代码,自动为NVIDIA、AMD和Intel GPU生成CUDA、OpenCL、SYCL和OpenACC并行代码,通过十个大型图和四种算法验证其有效性。
摘要:
稀疏图在现实和虚拟世界中无处不在。随着半结构化和非结构化数据的惊人增长,底层图的规模近年来呈现快速增长。分析此类大型结构需要并行处理,而稀疏计算、内存访问和通信固有的不规则性对此构成了挑战。理想情况下,程序员和领域专家只需专注于顺序计算,由编译器负责自动生成并行代码。另一方面,目标硬件设备数量繁多,实现最佳性能通常需要使用特定语言或框架进行编码。我们在这项工作中的目标是专注于一种图DSL,它允许领域专家编写几乎顺序的代码,并从相同的算法规范为不同的加速器生成并行代码。具体而言,我们展示了使用CUDA、OpenCL、SYCL和OpenACC编程语言,从StarPlat图DSL为NVIDIA、AMD和Intel GPU生成代码。使用包含十个大型图和四种流行算法的套件,我们展示了StarPlat多功能代码生成器的有效性。
英文摘要:
Sparse graphs are ubiquitous in real and virtual worlds. With the phenomenal growth in semi-structured and unstructured data, sizes of the underlying graphs have witnessed a rapid growth over the years. Analyzing such large structures necessitates parallel processing, which is challenged by the intrinsic irregularity of sparse computation, memory access, and communication. It would be ideal if programmers and domain-experts get to focus only on the sequential computation and a compiler takes care of auto-generating the parallel code. On the other side, there is a variety in the number of target hardware devices, and achieving optimal performance often demands coding in specific languages or frameworks. Our goal in this work is to focus on a graph DSL which allows the domain-experts to write almost-sequential code, and generate parallel code for different accelerators from the same algorithmic specification. In particular, we illustrate code generation from the StarPlat graph DSL for NVIDIA, AMD, and Intel GPUs using CUDA, OpenCL, SYCL, and OpenACC programming languages. Using a suite of ten large graphs and four popular algorithms, we present the efficacy of StarPlat's versatile code generator.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。