首页> 外文期刊>ACM transactions on computer systems >Assisting Static Compiler Vectorization with a Speculative Dynamic Vectorizer in an HW/SW Codesigned Environment
【24h】

Assisting Static Compiler Vectorization with a Speculative Dynamic Vectorizer in an HW/SW Codesigned Environment

机译:在硬件/软件代码签名环境中,使用推测动态矢量化器协助静态编译器矢量化

获取原文
获取原文并翻译 | 示例
           

摘要

Compiler-based static vectorization is used widely to extract data-level parallelism from computationintensive applications. Static vectorization is very effective in vectorizing traditional array-based applications. However, compilers' inability to do accurate interprocedural pointer disambiguation and interprocedural array dependence analysis severely limits vectorization opportunities. HW/SW codesigned processors provide an excellent opportunity to optimize the applications at runtime. The availability of dynamic application behavior at runtime helps in capturing vectorization opportunities generally missed by the compilers.This article proposes to complement the static vectorization with a speculative dynamic vectorizer in an HW/SW codesigned processor. We present a speculative dynamic vectorization algorithm that speculatively reorders ambiguous memory references to uncover vectorization opportunities. The speculative reordering of memory instructions avoids the need for accurate interprocedural pointer disambiguation and interprocedural array dependence analysis. The hardware checks for any memory dependence violation due to speculative vectorization and takes corrective action in case of violation. Our experiments show that the combined (static + dynamic) vectorization approach provides a 2x performance benefit compared to the static GCC vectorization alone, for SPECFP2006. Furthermore, the speculative dynamic vectorizer is able to vectorize 48% of the loops that ICC failed to vectorize due to conservative dependence analysis in the TSVC benchmark suite. Moreover, the dynamic vectorization scheme is as effective in vectorization of pointer-based applications as for the array-based ones, whereas compilers lose significant vectorization opportunities in pointer-based applications. Furthermore, we show that speculation is not only a luxury but also a necessity for runtime vectorization.
机译:基于编译器的静态矢量化被广泛用于从计算密集型应用程序中提取数据级并行性。静态向量化在向量化传统的基于数组的应用程序中非常有效。但是,编译器无法进行准确的过程间指针歧义消除和过程间数组相关性分析,严重限制了矢量化的机会。硬件/软件代码签名处理器为在运行时优化应用程序提供了极好的机会。动态应用程序行为在运行时的可用性有助于捕获编译器通常会错过的矢量化机会。本文提出在硬件/软件代码签名处理器中使用推测性动态矢量化器来补充静态矢量化。我们提出了一种推测性动态矢量化算法,该算法以推测方式重新排序模糊的内存引用,以发现矢量化机会。对存储器指令的推测性重新排序避免了对准确的过程间指针消歧和过程间数组依赖分析的需求。硬件检查由于推测性矢量化引起的任何内存依赖冲突,并在发生冲突时采取纠正措施。我们的实验表明,对于SPECFP2006,组合的(静态+动态)矢量化方法与单独的静态GCC矢量化相比,性能提高了2倍。此外,由于TSVC基准套件中的保守依赖性分析,推测性动态矢量化程序能够对48%ICC无法矢量化的循环进行矢量化。此外,动态矢量化方案在基于指针的应用程序的矢量化中与基于数组的应用程序一样有效,而编译器在基于指针的应用程序中却损失了很多矢量化机会。此外,我们证明了推测不仅是奢侈,而且是运行时向量化的必要条件。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号