A Novel Loop Fission Technique Inspired by Implicit Computational Complexity

05/18/2022
by   Clément Aubert, et al.
0

This work explores an unexpected application of Implicit Computational Complexity (ICC) to parallelize loops in imperative programs. Thanks to a lightweight dependency analysis, our algorithm allows splitting a loop into multiple loops that can be run in parallel, resulting in gains in terms of execution time similar to state-of-the-art automatic parallelization tools when both are applicable. Our graph-based algorithm is intuitive, language-agnostic, proven correct, and applicable to all types of loops, even if their loop iteration space is unknown statically or at compile time, if they are not in canonical form or if they contain loop-carried dependency. As contributions we deliver the computational technique, proof of its preservation of semantic correctness, and experimental results to quantify the expected performance gains. Our benchmarks also show that the technique could be seamlessly integrated into compiler passes or other automatic parallelization suites. We assert that this original and automatable loop transformation method was discovered thanks to the "orthogonal" approach offered by ICC.

READ FULL TEXT
research
11/01/2018

Loop Optimization Framework

The LLVM compiler framework supports a selection of loop transformations...
research
05/07/2022

Can We Run in Parallel? Automating Loop Parallelization for TornadoVM

With the advent of multi-core systems, GPUs and FPGAs, loop parallelizat...
research
02/10/2023

Evaluating the Performance of Speculative DOACROSS Loop Parallelization with taskloop

OpenMP provides programmers with directives to parallelize DOALL loops s...
research
03/10/2022

Realizing Implicit Computational Complexity

This abstract aims at presenting an ongoing effort to apply a novel typi...
research
02/09/2018

Implicit complexity via structure transformation

Implicit computational complexity, which aims at characterizing complexi...
research
04/01/2019

Modular Synthesis of Divide-and-Conquer Parallelism for Nested Loops (Extended Version)

We propose a methodology for automatic generation of divide-and-conquer ...
research
04/11/2020

Optimizing Cursor Loops in Relational Databases

Loops that iterate over SQL query results are quite common, both in appl...

Please sign up or login with your details

Forgot password? Click here to reset