A Study on "Dependence capturing strength" of four Dependence Analyzers in LLVM on SPEC 2017 benchmarks
In this project, we study the "dependence capturing strength" of the four dependence analyzers on SPEC 2017 benchmarks. Namely the following
-
Loop Access Info (LAI)
-
Dependence Analysis (Goff, Kennedy, Tseng)
-
Memory Dependence Analysis
-
Polly's Dependence Analyzer ()
Getting Started:
The LLVM compiler infrastructure project is a "collection of modular and reusable compiler and toolchain technologies" used to develop compiler front ends and back ends.
LLVM has three dependence analyzers for capturing dependencies. LAI is used on large scale by llvm for dependence capturing which in turn is used for optimizations. Goff-kennedy and Memory dependence analysis are other two analyzers in llvm.
Polly is a high-level loop and data-locality optimizer and optimization infrastructure for LLVM. It uses integer polyhedral model of the code and based on it tries to analyze and make optimizations in memory access patterns. Polly is capable of doing advanced loop transformations, tiling, vectorization etc. Polly has also displayed its optimization strength by showing massive runtime improvement over certain codes which were otherwise relatively slower. The Polyhedral optimization framework enables modeling of arbitrarily complex sequence of loop transformations into a single optimization step.
Polly has its own dependence analyzer which runs as a polly pass and facilitates Polyhedral optimizations.
It is a collection of standardized benchmarks and tools to evaluate performance and energy efficiency of computer systems. In this study however we'll be focusing only on following benchmarks.
500.perlbench_r, 502.gcc_r, 505.mcf_r, 523.xalancbmk_r, 531.deepsjeng_r, 541.leela_r, 548.exchange2_r, 508.namd_r, 510.parest_r , 544.nab_r.
-
Prerequisite passes:
-
Following passes were run before getting the the count of dependencies captured by each analyzer.
-mem2reg -loops -loop-simplify -loop-rotate -loop-simplifycfg
https://drive.google.com/open?id=1Sgfpe7D3t2j_COj0C4NJMNdlxGSuj8Qw