Skip to content

Adildangui/A-study-on-dependence-capturing-strength-of-4-dependence-analyzers-on-SPEC-2017-benchmarks.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

A Study on "Dependence capturing strength" of four Dependence Analyzers in LLVM on SPEC 2017 benchmarks

Adil Arun Dangui, Utpal Bora, Dangeti Tharun Kumar

IIT HYDERABAD

In this project, we study the "dependence capturing strength" of the four dependence analyzers on SPEC 2017 benchmarks. Namely the following

  1. Loop Access Info (LAI)

  2. Dependence Analysis (Goff, Kennedy, Tseng)

  3. Memory Dependence Analysis

  4. Polly's Dependence Analyzer ()

Getting Started:


LLVM:

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:

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.

SPEC-2017:

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.

Prerequisites:

  1. Prerequisite passes:

  2. Following passes were run before getting the the count of dependencies captured by each analyzer.
    -mem2reg -loops -loop-simplify -loop-rotate -loop-simplifycfg

Results:

https://drive.google.com/open?id=1Sgfpe7D3t2j_COj0C4NJMNdlxGSuj8Qw

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published