Vectorization past dependent branches through speculation

Vectorization past dependent branches through speculation
复制标题

通过推测向量化过去的依赖分支

DOI:
--
复制
发表时间:
2013
期刊:
Proceedings of the 22nd International Conference on Parallel Architectures and Compilation Techniques
影响因子:
--
通讯作者:
Qing Yi
Qing Yi
中科院分区:
--
文献类型:
--
作者:
Majedul Haque Sujon;R. C. Whaley;Qing Yi

文献摘要

被引文献

相似文献

现代体系结构越来越依赖于SIMD矢量化来提高浮点密集科学应用的性能。然而,现有的编译器优化技术用于自动矢量化,由于存在围绕部分矢量化计算而存在未知的对照流。在本文中,我们提出了一种新方法,投机矢量化,该方法推测了过去的依赖分支,以积极地矢量化计算路径,这些计算路径有望在运行时经常采用,同时只需在投机失败时使用标量指令重新启动计算。我们已经将技术整合到了迭代优化的编译器中,并采用了经验调整来选择有利可图的猜测路径。当应用于优化9个浮点基准测试时,我们的优化编译器的单个精度最高为6.8倍,使用AVX实现了双精度内核的3.4倍,同时将一些操作量化为先前技术不可矢量化。
Modern architectures increasingly rely on SIMD vectorization to improve performance for floating point intensive scientific applications. However, existing compiler optimization techniques for automatic vectorization are inhibited by the presence of unknown control flow surrounding partially vectorizable computations. In this paper, we present a new approach, speculative vectorization, which speculates past dependent branches to aggressively vectorize computational paths that are expected to be taken frequently at runtime, while simply restarting the calculation using scalar instructions when the speculation fails. We have integrated our technique in an iterative optimizing compiler and have employed empirical tuning to select the profitable paths for speculation. When applied to optimize 9 floating-point benchmarks, our optimizing compiler has achieved up to 6.8X speedup for single precision and 3.4X for double precision kernels using AVX, while vectorizing some operations considered not vectorizable by prior techniques.