LLVM Framework and IR Extensions for Parallelization, SIMD Vectorization and Offloading

LLVM Framework and IR Extensions for Parallelization, SIMD Vectorization and Offloading
复制标题

用于并行化、SIMD 矢量化和卸载的 LLVM 框架和 IR 扩展

DOI:
--
复制
发表时间:
2016
期刊:
Workshop on the LLVM Compiler Infrastructure in HPC
影响因子:
--
通讯作者:
A. Zaks
A. Zaks
中科院分区:
--
文献类型:
--
作者:
Xinmin Tian;Hideki Saito;Ernesto Su;A. Gaba;Matt Masten;Eric N. Garcia;A. Zaks

文献摘要

被引文献

相似文献

LLVM已经成为开发高级编译器、高性能计算软件和工具的软件开发生态系统中不可或缺的一部分。本文提出了一组LLVM IR扩展,用于显式并行,矢量和卸载程序结构。提出的LLVM IR扩展允许在LLVM中端为OpenMP®C/ c++和Fortran API以及任何其他高级源语言中的显式并行/simd结构进行降低和转换。本文讨论了支持OpenMP结构和子句的LLVM IR扩展的基本原理,给出了LLVM的内在函数、并行化、向量化和卸载框架,以及在SSA形式下对OpenMP并行、simd、卸载和数据属性语义建模的三明治方案。通过实例展示了我们在LLVM中端通道中的实现,这为实现与标量优化、向量化和循环优化的更好交互铺平了道路,从而获得更高的性能。
LLVM has become an integral part of the software-development ecosystem for developing advanced compilers, high-performance computing software and tools. This paper presents a small set of LLVM IR extensions for explicitly parallel, vector, and offloading program constructs. The proposed LLVM IR extensions enable the lowering and transformation in the LLVM middle-end for the OpenMP® C/C++ and Fortran API, and any other explicitly parallel/simd constructs in high-level source languages. This paper discusses the rationale of the LLVM IR extensions to support OpenMP constructs and clauses, and presents the LLVM intrinsic functions, the framework for parallelization, vectorization, and offloading, and the sandwich scheme to model the OpenMP parallel, simd, offloading and data-attribute semantics under the SSA form. Examples are given to show our implementation in the LLVM middle-end passes, which paves the way to achieve a better interaction with scalar optimizations, vectorization, and loop optimizations, and thus resulting in higher performance.