Abstract:In this paper, we present a modified Floyd-Warshall algorithm, where the most time-consuming part -calculating transitive closure describing self-dependences for each loop statement -is computed by means of basis dependence distance vectors derived from all vectors describing self-dependences. We demonstrate that the presented approach reduces the transitive closure calculation time for parameterized graphs representing all dependences in the loop in comparison with techniques implemented in the Omega and ISL … Show more
“…Analyzing the obtained set, we conclude that there exists a single parametric tile with identifier I I = [2,2]. It includes the following iterations: [5,5], [5,6], [6,1], [6,2], [6,3], [6,4], [6,5], [6,6] }.…”
Section: Card(t I L E_v L D)mentioning
confidence: 93%
“…By applying formula (5) to set I N V AL I D calculated for Example 4, we find the statement instances contained in set P RO B L E M AT I C presented below: [2,4], [2,5], [3,0], [3,1], [4,4], [4,5], [5,0], [5,1] }.…”
Section: Examplementioning
confidence: 99%
“…Techniques aimed at calculating the transitive closure of a dependence graph, which in general is parametric, are presented in papers [2,14,25] and they are out of the scope of this paper.…”
Section: Introductionmentioning
confidence: 99%
“…In order to compute the transitive closure of a dependence graph for loop nests examined in this paper, we have used the isl_map_transitive_closure function [27], the iterative approach [3], and the modified Floyd-Warshall algorithm [2]. The necessity of the usage of different algorithms is justified by our goal to get exact dependence graph transitive closure for each studied kernel and therefore to avoid any performance loss of target code unrelated to the algorithm itself.…”
Well-known techniques for tiled code generation are based on the polyhedral model and affine transformations. An alternative approach to generation of tiled code is to correct original rectangular tiles defined for a loop nest by means of the transitive closure of a dependence graph instead of deriving and applying affine transformations. In this paper, we present results of an analysis of basic features of tiles generated due to correction of original rectangular tiles. We introduce procedures which allow us to recognize such features as target tile type (fixed, varied, parametric), dimensionality, size (the number of statement instances within a tile), and loop nest tileability (the percentage of statement instances that can be tiled with rectangular tiles). We consider differences between those features of tiles generated by means of affine transformations and transitive closure. We also discuss results of experiments with PolyBench benchmarks and show how differences in tiles generated with the examined approach and affine transformations affect serial tiled code performance.
“…Analyzing the obtained set, we conclude that there exists a single parametric tile with identifier I I = [2,2]. It includes the following iterations: [5,5], [5,6], [6,1], [6,2], [6,3], [6,4], [6,5], [6,6] }.…”
Section: Card(t I L E_v L D)mentioning
confidence: 93%
“…By applying formula (5) to set I N V AL I D calculated for Example 4, we find the statement instances contained in set P RO B L E M AT I C presented below: [2,4], [2,5], [3,0], [3,1], [4,4], [4,5], [5,0], [5,1] }.…”
Section: Examplementioning
confidence: 99%
“…Techniques aimed at calculating the transitive closure of a dependence graph, which in general is parametric, are presented in papers [2,14,25] and they are out of the scope of this paper.…”
Section: Introductionmentioning
confidence: 99%
“…In order to compute the transitive closure of a dependence graph for loop nests examined in this paper, we have used the isl_map_transitive_closure function [27], the iterative approach [3], and the modified Floyd-Warshall algorithm [2]. The necessity of the usage of different algorithms is justified by our goal to get exact dependence graph transitive closure for each studied kernel and therefore to avoid any performance loss of target code unrelated to the algorithm itself.…”
Well-known techniques for tiled code generation are based on the polyhedral model and affine transformations. An alternative approach to generation of tiled code is to correct original rectangular tiles defined for a loop nest by means of the transitive closure of a dependence graph instead of deriving and applying affine transformations. In this paper, we present results of an analysis of basic features of tiles generated due to correction of original rectangular tiles. We introduce procedures which allow us to recognize such features as target tile type (fixed, varied, parametric), dimensionality, size (the number of statement instances within a tile), and loop nest tileability (the percentage of statement instances that can be tiled with rectangular tiles). We consider differences between those features of tiles generated by means of affine transformations and transitive closure. We also discuss results of experiments with PolyBench benchmarks and show how differences in tiles generated with the examined approach and affine transformations affect serial tiled code performance.
“…The paper by Bielecki et al (2014) presents the time of transitive closure calculation for NPBs (NAS, 2015). It depends on the number of dependence relations extracted for a loop nest and can vary from milliseconds to several minutes (in very rare cases when the number of dependence relations is equal to hundreds or thousands).…”
A novel approach to generation of tiled code for arbitrarily nested loops is presented. It is derived via a combination of the polyhedral and iteration space slicing frameworks. Instead of program transformations represented by a set of affine functions, one for each statement, it uses the transitive closure of a loop nest dependence graph to carry out corrections of original rectangular tiles so that all dependences of the original loop nest are preserved under the lexicographic order of target tiles. Parallel tiled code can be generated on the basis of valid serial tiled code by means of applying affine transformations or transitive closure using on input an inter-tile dependence graph whose vertices are represented by target tiles while edges connect dependent target tiles. We demonstrate how a relation describing such a graph can be formed. The main merit of the presented approach in comparison with the well-known ones is that it does not require full permutability of loops to generate both serial and parallel tiled codes; this increases the scope of loop nests to be tiled.
An approach of generation of tiled code with an arbitrary order of loops within tiles is presented. It is based on the transitive closure of the program dependence graph and derived via a combination of the Polyhedral and Iteration Space Slicing frameworks. The approach is explained by means of a working example. Details of an implementation of the approach in the TRACO compiler are outlined. Increasing tiled program performance due to loop permutation within tiles is illustrated on real-life programs from the NAS Parallel Benchmark suite. An analysis of speed-up and scalability of parallel tiled code with loop permutation is presented.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.