Presentation is loading. Please wait.

Presentation is loading. Please wait.

CACHETOR Detecting Cacheable Data to Remove Bloat Khanh Nguyen Guoqing Xu UC Irvine USA.

Similar presentations


Presentation on theme: "CACHETOR Detecting Cacheable Data to Remove Bloat Khanh Nguyen Guoqing Xu UC Irvine USA."— Presentation transcript:

1 CACHETOR Detecting Cacheable Data to Remove Bloat Khanh Nguyen Guoqing Xu UC Irvine USA

2 Introduction Bloat: Excessive work to accomplish simple tasks Modern software suffers from bloat [Xu et.al., FoSER 2010] It is difficult for compilers to remove the penalty One pattern: repeated computations that have the same inputs and produce the same outputs 4 out of 18 best practices (IBM’s) * are to reuse data Khanh Nguyen - UC Irvine * www.ibm.com/software/webservers/appserv/ws_bestpractices.pdf ‎

3 Example float[] fValues = {0.0, 1.0, 2.3, 1.0, 1.0, 3.4, 1.0, 1.0,..., 1.0}; int[] iValues = new int[fValues.length] ; for (int i = 0; i < fValues.length; i++){ iValues[i] = Float.floatToIntBits(fValues[i]); } {adapted from sunflow, an open-source image rendering system} Khanh Nguyen - UC Irvine if (fValues[i] == 1.0) iValues[i] = cached_result; else iValues[i] = Float.floatToIntBits(fValues[i]); int cached_result = Float.floatToIntBits(1.0); float[] fValues = {?, ?, ?, ?,..., ?};

4 The Big Picture Khanh Nguyen - UC Irvine Dynamic Dependence Analysis Dependence Profile/Graph I-CachetorD-CachetorM-Cachetor

5 Cachetor Introduction Scalable algorithms for the dependence analysis 3 detectors Evaluations Khanh Nguyen - UC Irvine

6 In Theory Khanh Nguyen - UC Irvine Full Value Profiling Full Dynamic Slicing Cachetor In Practice Abstract Value Profiling Abstract Dynamic Slicing

7 Overview Khanh Nguyen - UC Irvine Combine value profiling and dynamic slicing in a mutually-beneficial and scalable manner Distinct values are used to abstract instruction instances Result: an abstract dependence graph Nodes: abstract representations of runtime instances Edges: dependence relationships between nodes

8 Equivalence Class Khanh Nguyen - UC Irvine e1 … en Inst. instances f 1 Instruction i

9 Equivalence Class 1 11 2 22 3 333 4 4 5 5 6 6666 Inst. instances Values created f 1 ( inst. instance ) = value created

10 Inst. instances Values created f1f1 f2f2 -Top-N ? - Hashing ?

11 0 3 33 6 6 1 1 111 4 4 7 7 2 2 22 5 5 8 88 Inst. instances Values created f1f1 f2f2 - Hashing

12 Another Abstraction Level Context sensitive: To distinguish entities based on the calling context To improve the tool’s precision Please refer to our paper for details Khanh Nguyen - UC Irvine

13 Cacheability Khanh Nguyen - UC Irvine

14 Cachetor Introduction Scalable algorithms for the dependence analysis 3 detectors Evaluations Khanh Nguyen - UC Irvine

15 I-Cachetor Detect instructions that create identical values Compute cacheability for each static instruction (Inst.CM) Cacheability: 0312

16 D-Cachetor: Overview 2 steps: Step 1: detect cacheable individual objects Step 2: detect cacheable data structure Compute cacheability for each allocation site node

17 D-Cachetor: Step 1 Compute cacheability for each object (Obj.CM), not considering reference relationships Focus: instructions that write primitive-typed fields 12 …t

18 D-Cachetor: Step 2 Group objects using the reference relationships Compute DataStructureCM Focus: instructions that write reference-typed fields Add only objects whose Obj.CM is within a range

19 M-Cachetor Detect method calls that have the same inputs and produce the same outputs Compute CallSiteCM For each call site c: a = f( ), CallSiteCM is: If a is primitive: CallSiteCM = Inst.CM c If a is reference: CallSiteCM = the average of DataStructureCM of all data structures rooted at a

20 Implementation Jikes RVM 3.1.1 Optimizing-compiler-only mode Context-sensitive Evaluated on 14 benchmarks from DaCapo & Java Grande Khanh Nguyen - UC Irvine

21 Overheads Khanh Nguyen - UC Irvine

22 Case Studies Khanh Nguyen - UC Irvine Program Time Reduction Space Reduction GC runs Reduction GC time Reduction montecarlo12.1% 98.7% 70.0%89.2% raytracer19.1%1.2%33.3%30.2% euler 20.5% 0.4%40.0%44.8% bloat13.1%12.6%-7.3%-4.0% xalan5.2%0.1%-0.7%-1.1%

23 False Positives Khanh Nguyen - UC Irvine ProgramD-CachetorM-Cachetor montecarlo26 raytracer34 euler17 bloat14 xalan45 Numbers of false positives identified among top 20 items in the reports of D-Cachetor and M-Cachetor.

24 False Positives Sources Handling of floating point values Context-sensitive reporting Missing the actual values Hashing-induced false positives Khanh Nguyen - UC Irvine

25 Conclusions Cachetor - novel tool, supports detection of cacheable data to improve performance Scalable combination of value profiling and dynamic slicing 3 detectors that can detect cacheable: o Instructions o Data structures o Method calls Large optimization opportunities can be found from Cachetor’s reports Khanh Nguyen - UC Irvine

26 THANK YOU! Questions - Comments? Khanh Nguyen - UC Irvine

27 What happened in montecarlo? public void runSerial() { results = new Vector(nRunsMC); // Now do the computation. PriceStock ps; for( int iRun=0; iRun < nRunsMC; iRun++ ) {ps = new PriceStock(); ps.setInitAllTasks(initAllTasks); ps.setTask(tasks.elementAt(iRun)); ps.run(); results.addElement(ps.getResult()); } {Calculate the result on the fly} private void processSerial() { processResults(); } ps.setTask(iRun, (long)iRun*11); private void initTasks(int nRunsMC) { tasks = new Vector(nRunsMC); for( int i=0; i < nRunsMC; i++ ) { String header= "MC run “ + String.valueOf(i); ToTask task = new ToTask(header, (long)i*11); tasks.addElement((Object) task); } Khanh Nguyen - UC Irvine


Download ppt "CACHETOR Detecting Cacheable Data to Remove Bloat Khanh Nguyen Guoqing Xu UC Irvine USA."

Similar presentations


Ads by Google