Dynamic and Speculative Polyhedral Parallelization of Loop Nests Using Binary Code Patterns

被引:0
|
作者
Jimborean, Alexandra [1 ]
Clauss, Philippe [2 ]
Dollinger, Jean-Francois [2 ]
Loechner, Vincent [2 ]
Martinez Caamano, Juan Manuel [2 ]
机构
[1] Uppsala Univ, UPMARC, Uppsala, Sweden
[2] Univ Strasbourg, CNRS, INRIA, LSIIT, Strasbourg, France
关键词
Dynamic optimizations; speculative parallelization; binary code patterns; templates; polyhedral model; runtime;
D O I
10.1016/j.procs.2013.05.443
中图分类号
TP301 [理论、方法];
学科分类号
081202 ;
摘要
Speculative parallelization is a classic strategy for automatically parallelizing codes that cannot be handled at compile-time due to the use of dynamic data and control structures. Another motivation of being speculative is to adapt the code to the current execution context, by selecting at run-time an efficient parallel schedule. However, since this parallelization scheme requires on-the-fly semantics verification, it is in general difficult to perform advanced transformations for optimization and parallelism extraction. We propose a framework dedicated to speculative parallelization of scientific nested loop kernels, able to transform the code at runtime by re-scheduling the iterations to exhibit parallelism and data locality. The run-time process includes a transformation selection guided by profiling phases on short samples, using an instrumented version of the code. During this phase, the accessed memory addresses are interpolated to build a predictor of the forthcoming accesses. The collected addresses are also used to compute on-the-fly dependence distance vectors by tracking accesses to common addresses. Interpolating functions and distance vectors are then employed in dynamic dependence analysis and in selecting a parallelizing transformation that, if the prediction is correct, does not induce any rollback during execution. In order to ensure that the rollback time overhead stays low, the code is executed in successive slices of the outermost original loop of the nest. Each slice can be either a parallelized version, a sequential original version, or an instrumented version. Moreover, such slicing of the execution provides the opportunity of transforming differently the code to adapt to the observed execution phases. Parallel code generation is achieved almost at no cost by using binary code patterns that are generated at compile-time and that are simply patched at run-time to result in the transformed code. The framework has been implemented with extensions of the LLVM compiler and an x86-64 runtime system. Significant speed-ups are shown on a set of benchmarks that could not have been handled efficiently by a compiler.
引用
收藏
页码:2575 / 2578
页数:4
相关论文
共 31 条
  • [1] Polyhedral Parallelization of Binary Code
    Pradelle, Benoit
    Ketterlin, Alain
    Clauss, Philippe
    ACM TRANSACTIONS ON ARCHITECTURE AND CODE OPTIMIZATION, 2012, 8 (04)
  • [2] Dynamic and Speculative Polyhedral Parallelization Using Compiler-Generated Skeletons
    Jimborean, Alexandra
    Clauss, Philippe
    Dollinger, Jean-Francois
    Loechner, Vincent
    Caamano, Juan Manuel Martinez
    INTERNATIONAL JOURNAL OF PARALLEL PROGRAMMING, 2014, 42 (04) : 529 - 545
  • [3] Dynamic and Speculative Polyhedral Parallelization Using Compiler-Generated Skeletons
    Alexandra Jimborean
    Philippe Clauss
    Jean-François Dollinger
    Vincent Loechner
    Juan Manuel Martinez Caamaño
    International Journal of Parallel Programming, 2014, 42 : 529 - 545
  • [4] Online Dynamic Dependence Analysis for Speculative Polyhedral Parallelization
    Jimborean, Alexandra
    Clauss, Philippe
    Martinez, Juan Manuel
    Sukumaran-Rajam, Aravind
    EURO-PAR 2013 PARALLEL PROCESSING, 2013, 8097 : 191 - 202
  • [5] Speculative Runtime Parallelization of Loop Nests: Towards Greater Scope and Efficiency
    Rajam, Aravind Sukumaran
    Campostrini, Luis Esteban
    Caamano, Juan Manuel Martinez
    Clauss, Philippe
    2015 IEEE 29TH INTERNATIONAL PARALLEL AND DISTRIBUTED PROCESSING SYMPOSIUM WORKSHOPS, 2015, : 245 - 254
  • [6] Dynamic Parallelization of Single-Threaded Binary Programs using Speculative Slicing
    Wang, Cheng
    Wu, Youfeng
    Borin, Edson
    Hu, Shiliang
    Liu, Wei
    Sager, Dave
    Ngai, Tin-fook
    Fang, Jesse
    ICS'09: PROCEEDINGS OF THE 2009 ACM SIGARCH INTERNATIONAL CONFERENCE ON SUPERCOMPUTING, 2009, : 158 - 168
  • [7] Code Bones: Fast and Flexible Code Generation for Dynamic and Speculative Polyhedral Optimization
    Caamano, Juan Manuel Martinez
    Wolff, Willy
    Clauss, Philippe
    EURO-PAR 2016: PARALLEL PROCESSING, 2016, 9833 : 225 - 237
  • [8] Compiler-Assisted Dynamic Scheduling for Effective Parallelization of Loop Nests on Multicore Processors
    Baskaran, Muthu Manikandan
    Vydyanathan, Nagavijayalakshmi
    Bondhugula, Uday Kumar
    Ramanujam, J.
    Rountev, Atanas
    Sadayappan, P.
    ACM SIGPLAN NOTICES, 2009, 44 (04) : 219 - 228
  • [9] Loop Parallelization using Dynamic Commutativity Analysis
    Vasiladiotis, Christos
    Lozano, Roberto Castaneda
    Cole, Murray
    Franke, Bjorn
    CGO '21: PROCEEDINGS OF THE 2021 IEEE/ACM INTERNATIONAL SYMPOSIUM ON CODE GENERATION AND OPTIMIZATION (CGO), 2021, : 150 - 161
  • [10] Nested Loop Parallelization Using Polyhedral Optimization in High-Level Synthesis
    Suda, Akihiro
    Takase, Hideki
    Takagi, Kazuyoshi
    Takagi, Naofumi
    IEICE TRANSACTIONS ON FUNDAMENTALS OF ELECTRONICS COMMUNICATIONS AND COMPUTER SCIENCES, 2014, E97A (12) : 2498 - 2506