Parsimony: Enabling SIMD/Vector Programming in Standard Compiler Flows

Parsimony: Enabling SIMD/Vector Programming in Standard Compiler Flows
复制标题

简约:在标准编译器流程中启用 SIMD/向量编程

DOI:
10.1145/3579990.3580019
复制
发表时间:
2023
期刊:
Proceedings of the 21st ACM/IEEE International Symposium on Code Generation and Optimization
影响因子:
--
通讯作者:
Hardavellas, Nikos
Hardavellas, Nikos
中科院分区:
--
文献类型:
--
作者:
Kandiah, Vijay;Lustig, Daniel;Villa, Oreste;Nellans, David;Hardavellas, Nikos

文献摘要

参考文献

相似文献

在现代CPU上实现峰值吞吐量需要最大限度地使用单指令多数据(SIMD)或向量计算单元。单程序多数据(SPMD)编程模型是使用高级编程语言来实现这些ISA的有效方法。不幸的是,许多SPMD框架已经发展到具有过度限制的语言规范或未指定的编程模型,这减缓了SPMD风格编程的可扩展性采用。本文介绍了简约性(PARSIMd),SPMD编程方法,旨在与多种语言兼容的语义构建,并干净地集成到这些语言的标准优化编译器工具链。我们首先解释简约编程模型语义,以及它们如何启用独立的编译器IR到IR通道,该通道可以独立于其他通道执行向量化,从而提高SPMD编程的语言和工具链兼容性。然后,我们展示了一个LLVM原型的吝啬的方法,匹配的性能ispc,一个流行的,但限制性更强的SPMD方法,并实现了97%的性能的手写AVX-512 SIMD内在的70多个基准移植从Simd库。最后,我们讨论了简约暴露部分现有的语言和编译器流程,轻微的改进可以进一步提高SPMD程序向量化。
Achieving peak throughput on modern CPUs requires maximizing the use of single-instruction, multiple-data (SIMD) or vector compute units. Single-program, multiple-data (SPMD) programming models are an effective way to use high-level programming languages to target these ISAs. Unfortunately, many SPMD frameworks have evolved to have either overly-restrictive language specifications or under-specified programming models, and this has slowed the widescale adoption of SPMD-style programming. This paper introduces Parsimony (PARallel SIMd), a SPMD programming approach built with semantics designed to be compatible with multiple languages and to cleanly integrate into the standard optimizing compiler toolchains for those languages. We first explain the Parsimony programming model semantics and how they enable a standalone compiler IR-to-IR pass that can perform vectorization independently of other passes, improving the language and toolchain compatibility of SPMD programming. We then demonstrate a LLVM prototype of the Parsimony approach that matches the performance of ispc, a popular but more restrictive SPMD approach, and achieves 97% of the performance of hand-written AVX-512 SIMD intrinsics on over 70 benchmarks ported from the Simd Library. We finally discuss where Parsimony has exposed parts of existing language and compiler flows where slight improvements could further enable improved SPMD program vectorization.
Sierra:C 语言的 SIMD 扩展
DOI: 10.1145/2568058.2568062
发表时间: 2014
影响因子: 1.5
作者:
Roland Leißa;Immanuel Haffner;Sebastian Hack
通讯作者: Sebastian Hack
DOI: 10.1145/3445814.3446692
发表时间: 2021-04
期刊: Proceedings of the 26th ACM International Conference on Architectural Support for Programming Languages and Operating Systems
影响因子: --
作者:
Yishen Chen;Charith Mendis;Michael Carbin;Saman P. Amarasinghe
通讯作者: Yishen Chen;Charith Mendis;Michael Carbin;Saman P. Amarasinghe
基于 SSA 的控制流图的自动 SIMD 矢量化
DOI: --
发表时间: 2015
期刊: Springer Fachmedien Wiesbaden
影响因子: --
作者:
R. Karrenberg
通讯作者: R. Karrenberg
DOI: --
发表时间: 1972
期刊: SIGP
影响因子: --
作者:
P. Schneck
通讯作者: P. Schneck
您所需要的只是超级字级并行性:使用 SLP 进行系统控制流矢量化
DOI: --
发表时间: 2022
期刊: ACM-SIGPLAN Symposium on Programming Language Design and Implementation
影响因子: --
作者:
Yishen Chen;Charith Mendis;Saman P. Amarasinghe
通讯作者: Saman P. Amarasinghe