automatic resource bound analysis and linear optimization · 2020. 1. 3. · bird’s eye view...

120
Automatic Resource Bound Analysis and Linear Optimization Jan Homann

Upload: others

Post on 24-Sep-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Automatic Resource Bound Analysis and Linear Optimization

Jan Hoffmann

Jan HoffmannAssistant Professor

Computer Science DepartmentCarnegie Mellon University5000 Forbes Ave.Pittsburgh, PA 15213-3891

B [email protected]://www.cs.cmu.edu/~janh

Selection CommitteeMark Stehlik Impact Scholarship

Pittsburgh, 13th April 2016

Dear Members of the Selection Committee:

It is my great pleasure to nominate Benjamin Lichtman (Ben) for the Mark Stehlik Impact Schol-arship. As part of Course 15-400, Ben is performing research that shows a level of maturity that iscomparable to our stronger first and second year Ph.D. students. His enthusiasm, work ethic, andability to own and drive a challenging research project set an outstanding example of excellence.

I met Ben in Fall 2015 when he came to my office to interview me about my research as part of aclass project. He immediately attracted my attention since he was well prepared and had very clearunderstanding of the research problems I work on. I was delighted when he asked me a few weekslater to advice him during the 15-400 research practicum.

The first time I noticed something unusual about Ben was during the preparation period for hisproject. I was first skeptical when he stated that he had basically understood all the technicalmaterial I asked him to read. However, I noticed during our discussion that he had no difficultyunderstanding concepts that even experienced colleagues struggle with.

Ben selected one of the more challenging projects that I suggested: To extend a type-based automaticcomplexity analysis for functional programs to handle references and arrays. As usual, it is a bigstep to transition from purely functional code to programs with side effects and we made somefallback plans in case we would not be able to complete the work. However, the fallback planswere not necessary. Inspite of being busy with classes, Ben was able to complete every biweeklymilestone that he identified at start of the project; not because the project was going unusuallysmoothly but because he was able to solve every problem that he faced along the way. This includesa mathematically involved and lengthy soundness proof which was more difficult than anticipated,and the (ongoing) implementation of the work in Resource Aware ML; a complex resource analysissystem that is integrated in Inria’s OCaml compiler. The result is novel and original research andwe are currently preparing a conference submission of the work.

Ben is clearly one of the most talented students I have worked with. But I am most impressed byhis ability to own and drive a research project, and his determination to overcome difficulties andcomplete the work he set out to do. He always remains optimistic and is equally fearless when doingcomplex mathematical proofs and hacking messy systems.

Page 2: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Beyond worst-case analysis

Page 3: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Beyond worst-case analysis

… of algorithms

Page 4: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Beyond worst-case analysis

… of algorithms

Resource bound analysis

Page 5: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Beyond worst-case analysis

… of algorithms

Resource bound analysis

… of programs / software

Page 6: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Motivation: Why analyze resource usage of programs?

Page 7: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Resource Usage in Safety-Critical Systems

Memory Usage Timing

Page 8: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Resource Usage in Safety-Critical Systems

Unintended acceleration in Toyota cars in the US

2005-2009.

Memory Usage Timing

Page 9: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Resource Usage in Safety-Critical Systems

ICE 3 Velaro D delivery delayed by one year because of software

performance issues in 2013.

Unintended acceleration in Toyota cars in the US

2005-2009.

Memory Usage Timing

Page 10: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Performance Bugs are Common and Expensive

HealthCare.gov debacle has been mainly caused by

performance issues.

Google Apps Developer: “Cannot test for performance

bugs with regression test”.

Page 11: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Software Security

Algorithmic Complexity Attacks Side-Channel Attacks

Page 12: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Software Security

Algorithmic Complexity Attacks Side-Channel Attacks

Space/Time Analysis for Cybersecurity (STAC)October 2014$ 53M program

Our team:

Resource Aware MLJan Hoffmann Klaus Aehlig Martin Hofmann

Quick Sort for Integers Longest Common Subsequence

Matrix Multiplication with Transposition

Matrix Multiplication with Accumulation

Linear Constraint Solving

Resource-Aware Type System

Automatic Amortized Resource Analysis

P(Int) = {a ⇥� 1}

P(A1,A2) = {(a1, a2) ⇤� p1(a1) · p2(a2) | pi ⇥ P(Ai )}

P(L(A)) = {[a1, ... , an] ⇤�X

1�j1<···<jk�n

kY

i=1

pi (aji ) | k ⇥ N, pi ⇥ P(A)}

Computed Bound Actual Behavior Performance

Quick Sort (Integers) 12n2 + 14n + 3 O(n2) 0.1 sSplit and Sort 16n2 + 46n + 9 O(n2) 2.1 sInsertion Sort (Strings) 8n2m + 8n2 - 8nm + 4n + 3 O(n2m) 0.91 sDuplicate Elimination 6n2m + 9n2 - 6nm + 3n + 3 O(n2m) 0.97 sMatrix Multiplication 28xmn + 32xm + 2x + 14n + 21 O(xmn) 1.96 sLongest Com. Subseq. 39nm + 6m + 21n + 19 O(nm) 0.36 sSubtrees 4n2 + 19n + 3 O(n2) 0.06 s

Computed Evaluation-Step Bounds

Multivariate Resource Polynomials

• Precise: bounds are resource polynomials

• Efficient: inference via linear programming

• Reliable: formal soundness proof of the bounds

• Verifiable: type derivation is a certificate

Polynomial Amortized Resource Analysis

Jan HoffmannAssistant Professor

Computer Science DepartmentCarnegie Mellon University5000 Forbes Ave.Pittsburgh, PA 15213-3891

B [email protected]://www.cs.cmu.edu/~janh

Selection CommitteeMark Stehlik Impact Scholarship

Pittsburgh, 13th April 2016

Dear Members of the Selection Committee:

It is my great pleasure to nominate Benjamin Lichtman (Ben) for the Mark Stehlik Impact Schol-arship. As part of Course 15-400, Ben is performing research that shows a level of maturity that iscomparable to our stronger first and second year Ph.D. students. His enthusiasm, work ethic, andability to own and drive a challenging research project set an outstanding example of excellence.

I met Ben in Fall 2015 when he came to my office to interview me about my research as part of aclass project. He immediately attracted my attention since he was well prepared and had very clearunderstanding of the research problems I work on. I was delighted when he asked me a few weekslater to advice him during the 15-400 research practicum.

The first time I noticed something unusual about Ben was during the preparation period for hisproject. I was first skeptical when he stated that he had basically understood all the technicalmaterial I asked him to read. However, I noticed during our discussion that he had no difficultyunderstanding concepts that even experienced colleagues struggle with.

Ben selected one of the more challenging projects that I suggested: To extend a type-based automaticcomplexity analysis for functional programs to handle references and arrays. As usual, it is a bigstep to transition from purely functional code to programs with side effects and we made somefallback plans in case we would not be able to complete the work. However, the fallback planswere not necessary. Inspite of being busy with classes, Ben was able to complete every biweeklymilestone that he identified at start of the project; not because the project was going unusuallysmoothly but because he was able to solve every problem that he faced along the way. This includesa mathematically involved and lengthy soundness proof which was more difficult than anticipated,and the (ongoing) implementation of the work in Resource Aware ML; a complex resource analysissystem that is integrated in Inria’s OCaml compiler. The result is novel and original research andwe are currently preparing a conference submission of the work.

Ben is clearly one of the most talented students I have worked with. But I am most impressed byhis ability to own and drive a research project, and his determination to overcome difficulties andcomplete the work he set out to do. He always remains optimistic and is equally fearless when doingcomplex mathematical proofs and hacking messy systems.

Page 13: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Static Resource Bound Analysis

Given: A program P

Question: What is the worst-case resource consumption of P as a function of the size of its inputs?

Page 14: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Static Resource Bound Analysis

Given: A program P

Question: What is the worst-case resource consumption of P as a function of the size of its inputs?

Clock cycles, heap space, power, ...

Page 15: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Static Resource Bound Analysis

Given: A program P

Question: What is the worst-case resource consumption of P as a function of the size of its inputs?

Clock cycles, heap space, power, ...

Not only asymptotic bounds

but concrete constant factors.

Page 16: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Static Resource Bound Analysis

Given: A program P

Question: What is the worst-case resource consumption of P as a function of the size of its inputs?

Clock cycles, heap space, power, ...

Not only asymptotic bounds

but concrete constant factors.

Automatic

Page 17: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Static Resource Bound Analysis

Given: A program P

Question: What is the worst-case resource consumption of P as a function of the size of its inputs?

Clock cycles, heap space, power, ...

Not only asymptotic bounds

but concrete constant factors.

AutomaticUndecidable problem

Page 18: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Research Challenges

Model and predict resource usage at development time.

Source code

Page 19: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Research Challenges

Model and predict resource usage at development time.

Source code

Run-time system Hardware

LibrariesCompiler

Page 20: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Research Challenges

Help developers to reason about quantitative properties.

• Computer support: Modeling, specification, verification, automation and user interaction

• Compositionally: Track size changes and specify resource-usage of library code

• Language features: Concurrency, higher-order, data structures, …

Page 21: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Why is this Related?

1. Beyond worst-case analysis of algorithms

‣ Automation

‣ Concrete (non-asymptotic) bounds for specific hardware

2. We face similar challenges in resource-bound analysis

‣ “The worst-case behavior doesn’t happen in practice.”

3. We reduce bound inference to linear optimization

‣ Linear programs we get are solvable in linear time in practice

‣ Theoretical worst-case of the algorithm is exponential (simplex)

Page 22: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

• Motivation

• How does automatic resource bound analysis work?

• How well does automatic resource bound analysis work?(implementation and experiments)

• What are the properties of the LP instances that we get?

Outline

Page 23: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Bird’s Eye View Type-Based Resource Analysis

Resource Bound

12n2 + 14n + 3

Source Code

Page 24: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Bird’s Eye View Type-Based Resource Analysis

Resource Bound

12n2 + 14n + 3

Source Code

applies toMachine Code

Page 25: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Bird’s Eye View Type-Based Resource Analysis

Compiler

Resource Bound

12n2 + 14n + 3

Source Code

applies toMachine Code

Page 26: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Bird’s Eye View Type-Based Resource Analysis

Compiler

Resource Bound

12n2 + 14n + 3

Source Code

applies toMachine Code

Run-time system Hardware

Page 27: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Bird’s Eye View Type-Based Resource Analysis

CompilerFormal Cost Semantics

Resource Bound

12n2 + 14n + 3

Source Code

applies toMachine Code

Run-time system Hardware

Page 28: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Bird’s Eye View Type-Based Resource Analysis

CompilerFormal Cost Semantics

aiT WCET Analyzers

Resource Bound

12n2 + 14n + 3

Source Code

applies toMachine Code

Run-time system Hardware

Page 29: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Bird’s Eye View Type-Based Resource Analysis

CompilerFormal Cost Semantics

aiT WCET Analyzers

Resource Bound

12n2 + 14n + 3

Source Code

applies toMachine Code

CPLEX

CLP

Type Inference

68 Chapter 4. Linear Potential

acc:intqv

q 0v

acc : int(A:VAR)

ß(last) = (int,Lpß(int))°°°°°!qß/q 0ß int

acc:int, x:int,xs:Lp (int)qa

q 0a

last(x,xs) : int(A:APP)

acc:int, l :Lp (int)qq 0 match l with | nil ! acc | cons(x,xs) ! last(x,xs) : int

(A:MATL)

A:VAR: qv ∏ q 0v +K var

A:APP: qa = qß+ c +K app1 q 0

a = q 0ß+ c °K app

2A:MATL: q+p∏qa+K matC

1 q∏qv+K matN1 q 0

a∏q 0+K matC2 q 0

v∏q 0+K matN2

Recursive: pß = p qß = q q 0ß = q 0

Minimize: qß+1000pß

Figure 4.4: Inferring a linear resource-annotated type for the last: the annotatedtype derivation, the linear constraints derived from the algorithmic type rules,and the objective function.

multiplicative factors 1 and 1000 reflect that linear potential (p) is more expensive thenconstant potential (q). In general, we state in objective functions that inner potential,say, in list of list, is more expensive than outer potential.

The choice of the multiplicative factors is a heuristic. You can always construct RAMLprograms that will admit a linear constraint system in which the objective function isminimized by a solution that assign more potential to linear annotations than necessary.The problem is that classic linear programming does permit objectives that state thatthe minimization of one constraint is more important than the minimization of another.

In practice, the objective function is however not very important. The results aregenerally stable when changing the constant factors in the objective function. Thereason is that cases where the LP solver has an option to trade linear for constantpotential are relatively seldom. The example in Figure 4.4 is representative in thisregard.

4.5 Examples

This section exemplifies the analysis with different RAML programs. At first, I demon-strate that the analysis works well on typical linear functions on lists and trees likemap, fold, and filter operations, which are naturally implemented by using structuralinduction. Hereafter, I demonstrate the advantages of amortization by automaticallyanalyzing a breath-fist search on trees that uses a stack. Then I give more theoreticallymotivated examples that demonstrate the need of rational potential and the possibilityof analyzing non-terminating functions.

Type DerivationRun-time system Hardware

Page 30: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Bird’s Eye View Type-Based Resource Analysis

CompilerFormal Cost Semantics

aiT WCET Analyzers

Resource Bound

12n2 + 14n + 3

Source Code

applies toMachine Code

CPLEX

CLP

Type Inference

68 Chapter 4. Linear Potential

acc:intqv

q 0v

acc : int(A:VAR)

ß(last) = (int,Lpß(int))°°°°°!qß/q 0ß int

acc:int, x:int,xs:Lp (int)qa

q 0a

last(x,xs) : int(A:APP)

acc:int, l :Lp (int)qq 0 match l with | nil ! acc | cons(x,xs) ! last(x,xs) : int

(A:MATL)

A:VAR: qv ∏ q 0v +K var

A:APP: qa = qß+ c +K app1 q 0

a = q 0ß+ c °K app

2A:MATL: q+p∏qa+K matC

1 q∏qv+K matN1 q 0

a∏q 0+K matC2 q 0

v∏q 0+K matN2

Recursive: pß = p qß = q q 0ß = q 0

Minimize: qß+1000pß

Figure 4.4: Inferring a linear resource-annotated type for the last: the annotatedtype derivation, the linear constraints derived from the algorithmic type rules,and the objective function.

multiplicative factors 1 and 1000 reflect that linear potential (p) is more expensive thenconstant potential (q). In general, we state in objective functions that inner potential,say, in list of list, is more expensive than outer potential.

The choice of the multiplicative factors is a heuristic. You can always construct RAMLprograms that will admit a linear constraint system in which the objective function isminimized by a solution that assign more potential to linear annotations than necessary.The problem is that classic linear programming does permit objectives that state thatthe minimization of one constraint is more important than the minimization of another.

In practice, the objective function is however not very important. The results aregenerally stable when changing the constant factors in the objective function. Thereason is that cases where the LP solver has an option to trade linear for constantpotential are relatively seldom. The example in Figure 4.4 is representative in thisregard.

4.5 Examples

This section exemplifies the analysis with different RAML programs. At first, I demon-strate that the analysis works well on typical linear functions on lists and trees likemap, fold, and filter operations, which are naturally implemented by using structuralinduction. Hereafter, I demonstrate the advantages of amortization by automaticallyanalyzing a breath-fist search on trees that uses a stack. Then I give more theoreticallymotivated examples that demonstrate the need of rational potential and the possibilityof analyzing non-terminating functions.

Type DerivationRun-time system Hardware

Page 31: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Bird’s Eye View Type-Based Resource Analysis

Resource Bound

12n2 + 14n + 3

Source Code

CPLEX

CLP

Type Inference

68 Chapter 4. Linear Potential

acc:intqv

q 0v

acc : int(A:VAR)

ß(last) = (int,Lpß(int))°°°°°!qß/q 0ß int

acc:int, x:int,xs:Lp (int)qa

q 0a

last(x,xs) : int(A:APP)

acc:int, l :Lp (int)qq 0 match l with | nil ! acc | cons(x,xs) ! last(x,xs) : int

(A:MATL)

A:VAR: qv ∏ q 0v +K var

A:APP: qa = qß+ c +K app1 q 0

a = q 0ß+ c °K app

2A:MATL: q+p∏qa+K matC

1 q∏qv+K matN1 q 0

a∏q 0+K matC2 q 0

v∏q 0+K matN2

Recursive: pß = p qß = q q 0ß = q 0

Minimize: qß+1000pß

Figure 4.4: Inferring a linear resource-annotated type for the last: the annotatedtype derivation, the linear constraints derived from the algorithmic type rules,and the objective function.

multiplicative factors 1 and 1000 reflect that linear potential (p) is more expensive thenconstant potential (q). In general, we state in objective functions that inner potential,say, in list of list, is more expensive than outer potential.

The choice of the multiplicative factors is a heuristic. You can always construct RAMLprograms that will admit a linear constraint system in which the objective function isminimized by a solution that assign more potential to linear annotations than necessary.The problem is that classic linear programming does permit objectives that state thatthe minimization of one constraint is more important than the minimization of another.

In practice, the objective function is however not very important. The results aregenerally stable when changing the constant factors in the objective function. Thereason is that cases where the LP solver has an option to trade linear for constantpotential are relatively seldom. The example in Figure 4.4 is representative in thisregard.

4.5 Examples

This section exemplifies the analysis with different RAML programs. At first, I demon-strate that the analysis works well on typical linear functions on lists and trees likemap, fold, and filter operations, which are naturally implemented by using structuralinduction. Hereafter, I demonstrate the advantages of amortization by automaticallyanalyzing a breath-fist search on trees that uses a stack. Then I give more theoreticallymotivated examples that demonstrate the need of rational potential and the possibilityof analyzing non-terminating functions.

Type Derivation

Page 32: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Bird’s Eye View Type-Based Resource Analysis

Resource Bound

12n2 + 14n + 3

Source Code

CPLEX

CLP

Type Inference

68 Chapter 4. Linear Potential

acc:intqv

q 0v

acc : int(A:VAR)

ß(last) = (int,Lpß(int))°°°°°!qß/q 0ß int

acc:int, x:int,xs:Lp (int)qa

q 0a

last(x,xs) : int(A:APP)

acc:int, l :Lp (int)qq 0 match l with | nil ! acc | cons(x,xs) ! last(x,xs) : int

(A:MATL)

A:VAR: qv ∏ q 0v +K var

A:APP: qa = qß+ c +K app1 q 0

a = q 0ß+ c °K app

2A:MATL: q+p∏qa+K matC

1 q∏qv+K matN1 q 0

a∏q 0+K matC2 q 0

v∏q 0+K matN2

Recursive: pß = p qß = q q 0ß = q 0

Minimize: qß+1000pß

Figure 4.4: Inferring a linear resource-annotated type for the last: the annotatedtype derivation, the linear constraints derived from the algorithmic type rules,and the objective function.

multiplicative factors 1 and 1000 reflect that linear potential (p) is more expensive thenconstant potential (q). In general, we state in objective functions that inner potential,say, in list of list, is more expensive than outer potential.

The choice of the multiplicative factors is a heuristic. You can always construct RAMLprograms that will admit a linear constraint system in which the objective function isminimized by a solution that assign more potential to linear annotations than necessary.The problem is that classic linear programming does permit objectives that state thatthe minimization of one constraint is more important than the minimization of another.

In practice, the objective function is however not very important. The results aregenerally stable when changing the constant factors in the objective function. Thereason is that cases where the LP solver has an option to trade linear for constantpotential are relatively seldom. The example in Figure 4.4 is representative in thisregard.

4.5 Examples

This section exemplifies the analysis with different RAML programs. At first, I demon-strate that the analysis works well on typical linear functions on lists and trees likemap, fold, and filter operations, which are naturally implemented by using structuralinduction. Hereafter, I demonstrate the advantages of amortization by automaticallyanalyzing a breath-fist search on trees that uses a stack. Then I give more theoreticallymotivated examples that demonstrate the need of rational potential and the possibilityof analyzing non-terminating functions.

Type Derivation

Clear soundness theorem.

Naturally compositional.

Efficient inference via LP solving.

Page 33: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

• Assign potential functions to data structures➡ States are mapped to non-negative numbers

• Potential pays the resource consumption and the potential at the following program point

• Initial potential is an upper bound

Idea: Automate Amortized Analysis

�(state) � 0

�(before) � �(after) + cost

�(initial state) �P

cost

telescoping

Page 34: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

• Assign potential functions to data structures➡ States are mapped to non-negative numbers

• Potential pays the resource consumption and the potential at the following program point

• Initial potential is an upper bound

Idea: Automate Amortized Analysis

�(state) � 0

�(before) � �(after) + cost

�(initial state) �P

cost

Type systems for automatic analysis

• Fix a format of potential functions

• Develop type rules that manipulate potential functions

telescoping

Page 35: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

• Assign potential functions to data structures➡ States are mapped to non-negative numbers

• Potential pays the resource consumption and the potential at the following program point

• Initial potential is an upper bound

Idea: Automate Amortized Analysis

�(state) � 0

�(before) � �(after) + cost

�(initial state) �P

cost

Type systems for automatic analysis

• Fix a format of potential functions

• Develop type rules that manipulate potential functions

telescoping

Potential is given by types.

Page 36: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Append for Persistent Lists

Heap-space usage is 2n if

‣ n is the length of list x

‣ One list element requires two heap cells(data and pointer)

append(x,y)

Page 37: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Append for Persistent Lists

Heap-space usage is 2n if

‣ n is the length of list x

‣ One list element requires two heap cells(data and pointer)

Example evaluation:

append(x,y)

Page 38: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Append for Persistent Lists

c

b

x a y d

e

Heap-space usage is 2n if

‣ n is the length of list x

‣ One list element requires two heap cells(data and pointer)

Example evaluation:

append(x,y)

Page 39: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Append for Persistent Lists

c

b

x a y d

e

c

Heap-space usage is 2n if

‣ n is the length of list x

‣ One list element requires two heap cells(data and pointer)

Example evaluation:

append(x,y)

Page 40: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Append for Persistent Lists

c

b

x a y d

e

c b

Heap-space usage is 2n if

‣ n is the length of list x

‣ One list element requires two heap cells(data and pointer)

Example evaluation:

append(x,y)

Page 41: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Append for Persistent Lists

c

b

x a y d

e

c b a

Heap-space usage is 2n if

‣ n is the length of list x

‣ One list element requires two heap cells(data and pointer)

Example evaluation:

append(x,y)

Page 42: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Append for Persistent Lists

c

b

x a y d

e

c b a append(x,y)

Heap-space usage is 2n if

‣ n is the length of list x

‣ One list element requires two heap cells(data and pointer)

Example evaluation:

append(x,y)

Page 43: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Append for Persistent Lists

c

b

x a y d

e

c b a append(x,y)

Heap usage: 2*n = 2*3 = 6

Heap-space usage is 2n if

‣ n is the length of list x

‣ One list element requires two heap cells(data and pointer)

Example evaluation:

append(x,y)

Page 44: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Composing Calls of Append

Heap usage of f(x,y,z) is 2n + 2(n+m) if

‣ n is the length of list x

‣ m is the length of list y

f(x,y,z) = { t = append(x,y); append(t,z)}

Page 45: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Composing Calls of Append

c

b

x a y d

e

Initial potential: 4*n + 2*m = 4*3 + 2*2 = 16

4

4

4

Heap usage of f(x,y,z) is 2n + 2(n+m) if

‣ n is the length of list x

‣ m is the length of list y

f(x,y,z) = { t = append(x,y); append(t,z)}

2

2

z f

Page 46: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Composing Calls of Append

c

b

x a y d

e

Initial potential: 4*n + 2*m = 4*3 + 2*2 = 16

4

4

4

Heap usage of f(x,y,z) is 2n + 2(n+m) if

‣ n is the length of list x

‣ m is the length of list y

append(x,y)

f(x,y,z) = { t = append(x,y); append(t,z)}

2

2

z f

Page 47: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Composing Calls of Append

c

b

x a y d

e

Initial potential: 4*n + 2*m = 4*3 + 2*2 = 16

4

4

Heap usage of f(x,y,z) is 2n + 2(n+m) if

‣ n is the length of list x

‣ m is the length of list y

append(x,y)

f(x,y,z) = { t = append(x,y); append(t,z)}

2

2

z f

c2

Page 48: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Composing Calls of Append

c

b

x a y d

e

Initial potential: 4*n + 2*m = 4*3 + 2*2 = 16

4

Heap usage of f(x,y,z) is 2n + 2(n+m) if

‣ n is the length of list x

‣ m is the length of list y

append(x,y)

f(x,y,z) = { t = append(x,y); append(t,z)}

2

2

z f

c2

b2

Page 49: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Composing Calls of Append

c

b

x a y d

e

Initial potential: 4*n + 2*m = 4*3 + 2*2 = 16

Heap usage of f(x,y,z) is 2n + 2(n+m) if

‣ n is the length of list x

‣ m is the length of list y

append(x,y)

f(x,y,z) = { t = append(x,y); append(t,z)}

2

2

z f

c2

b2

a2

Page 50: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Composing Calls of Append

c

b

x a y d

e

t

Initial potential: 4*n + 2*m = 4*3 + 2*2 = 16

Heap usage of f(x,y,z) is 2n + 2(n+m) if

‣ n is the length of list x

‣ m is the length of list y

f(x,y,z) = { t = append(x,y); append(t,z)}

2

2

z f

c2

b2

a2

Page 51: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Composing Calls of Append

c

b

x a y d

e

t

Initial potential: 4*n + 2*m = 4*3 + 2*2 = 16

Heap usage of f(x,y,z) is 2n + 2(n+m) if

‣ n is the length of list x

‣ m is the length of list y

f(x,y,z) = { t = append(x,y); append(t,z)}

2

2

z f

c2

b2

a2

append(t,z)

Page 52: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Composing Calls of Append

c

b

x a y d

e

t

Initial potential: 4*n + 2*m = 4*3 + 2*2 = 16

Heap usage of f(x,y,z) is 2n + 2(n+m) if

‣ n is the length of list x

‣ m is the length of list y

f(x,y,z) = { t = append(x,y); append(t,z)}

2

z f

c2

b2

a2

e

append(t,z)

Page 53: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Composing Calls of Append

c

b

x a y d

e

t

Initial potential: 4*n + 2*m = 4*3 + 2*2 = 16

Heap usage of f(x,y,z) is 2n + 2(n+m) if

‣ n is the length of list x

‣ m is the length of list y

f(x,y,z) = { t = append(x,y); append(t,z)}

z f

c2

b2

a2

e d

append(t,z)

Page 54: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Composing Calls of Append

c

b

x a y d

e

t

Initial potential: 4*n + 2*m = 4*3 + 2*2 = 16

Heap usage of f(x,y,z) is 2n + 2(n+m) if

‣ n is the length of list x

‣ m is the length of list y

f(x,y,z) = { t = append(x,y); append(t,z)}

z f

c b2

a2

e d c

append(t,z)

Page 55: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Composing Calls of Append

c

b

x a y d

e

t

Initial potential: 4*n + 2*m = 4*3 + 2*2 = 16

Heap usage of f(x,y,z) is 2n + 2(n+m) if

‣ n is the length of list x

‣ m is the length of list y

f(x,y,z) = { t = append(x,y); append(t,z)}

z f

c b a2

e d c b

append(t,z)

Page 56: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Composing Calls of Append

c

b

x a y d

e

t

Initial potential: 4*n + 2*m = 4*3 + 2*2 = 16

Heap usage of f(x,y,z) is 2n + 2(n+m) if

‣ n is the length of list x

‣ m is the length of list y

f(x,y,z) = { t = append(x,y); append(t,z)}

z f

c b a

e d c b a

append(t,z)

Page 57: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Composing Calls of Append

c

b

x a y d

e

t

Initial potential: 4*n + 2*m = 4*3 + 2*2 = 16

Heap usage of f(x,y,z) is 2n + 2(n+m) if

‣ n is the length of list x

‣ m is the length of list y

f(x,y,z) = { t = append(x,y); append(t,z)}

z f

c b a

append(t,z)e d c b a

Page 58: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Composing Calls of Append

c

b

x a y d

e

t

Initial potential: 4*n + 2*m = 4*3 + 2*2 = 16

Heap usage of f(x,y,z) is 2n + 2(n+m) if

‣ n is the length of list x

‣ m is the length of list y

f(x,y,z) = { t = append(x,y); append(t,z)}

z f

c b a

append(t,z)e d c b a

Implicit reasoning about size-changes.

Page 59: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Composing Calls of Append

The most general type of append is specialized at call-sites:

f(x,y,z) = {

t = append(x,y);

append(t,z)

} append: (L (int),L (int)) ----> L (int)2 00/00

append: (L (int),L (int)) ----> L (int)4 20/02

append: (L (int),L (int)) ----> L (int) | Φq rs/tp Linear constraints.

Page 60: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Polynomial Potential Functions

Page 61: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Phd Thesis: Polynomial Potential Functions

User-defined resource metrics (i.e., by tick(q) in the code)

Naturally compositional: tracks size changes, types are specifications

Bound inference by reduction to efficient LP solving

Type derivations prove bounds with respect to the cost semantics

Linear Potential Functions

Page 62: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Phd Thesis: Polynomial Potential Functions

User-defined resource metrics (i.e., by tick(q) in the code)

Naturally compositional: tracks size changes, types are specifications

Bound inference by reduction to efficient LP solving

Type derivations prove bounds with respect to the cost semantics

Linear Potential Functions

Multivariate Polynomial Potential Functions

Page 63: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Phd Thesis: Polynomial Potential Functions

User-defined resource metrics (i.e., by tick(q) in the code)

Naturally compositional: tracks size changes, types are specifications

Bound inference by reduction to efficient LP solving

Type derivations prove bounds with respect to the cost semantics

Linear Potential Functions

Multivariate Polynomial Potential Functions

For example m*n2.

Page 64: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Phd Thesis: Polynomial Potential Functions

User-defined resource metrics (i.e., by tick(q) in the code)

Naturally compositional: tracks size changes, types are specifications

Bound inference by reduction to efficient LP solving

Type derivations prove bounds with respect to the cost semantics

Linear Potential Functions

Multivariate Polynomial Potential Functions

For example m*n2.

First automatic, type-based resource analysis for polynomial bounds.

Page 65: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Polynomial Potential Functions

Computed time bound:12m2 + 24mn + 12n2 + 14m + 22n + 11

t = append(xs,ys);quicksort(t)

Page 66: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Polynomial Potential Functions

Computed time bound:12m2 + 24mn + 12n2 + 14m + 22n + 11

t = append(xs,ys);quicksort(t)

quicksort : (L(int), (3, 26, 24)) ! (L(int), (0, 0, 0))

append : ((L(int), L(int)),

11 26 2434 2424

!) ! (L(int), (3, 26, 24))

6

Page 67: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Polynomial Potential Functions

Computed time bound:12m2 + 24mn + 12n2 + 14m + 22n + 11

t = append(xs,ys);quicksort(t)

26m34n 24

✓n

2

◆24

✓m

2

◆24nm6 + + + + +

quicksort : (L(int), (3, 26, 24)) ! (L(int), (0, 0, 0))

append : ((L(int), L(int)),

11 26 2434 2424

!) ! (L(int), (3, 26, 24))

6

Page 68: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Polynomial Potential Functions

Computed time bound:12m2 + 24mn + 12n2 + 14m + 22n + 11

t = append(xs,ys);quicksort(t)

26m34n 24

✓n

2

◆24

✓m

2

◆24nm6 + + + + +

quicksort : (L(int), (3, 26, 24)) ! (L(int), (0, 0, 0))

append : ((L(int), L(int)),

11 26 2434 2424

!) ! (L(int), (3, 26, 24))

6

8n + 3Cost of append

Page 69: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Example: Polynomial Potential Functions

Computed time bound:12m2 + 24mn + 12n2 + 14m + 22n + 11

t = append(xs,ys);quicksort(t)

3 + + 24

✓n+m

2

◆26(n+m)

26m34n 24

✓n

2

◆24

✓m

2

◆24nm6 + + + + +

quicksort : (L(int), (3, 26, 24)) ! (L(int), (0, 0, 0))

append : ((L(int), L(int)),

11 26 2434 2424

!) ! (L(int), (3, 26, 24))

6

8n + 3Cost of append

Page 70: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Multivariate Resource Polynomials [POPL’11]

Are non-negative linear combinations of the following base polynomials:

P(Int) = {a ⇥� 1}

P(A1,A2) = {(a1, a2) ⇤� p1(a1) · p2(a2) | pi ⇥ P(Ai )}

P(L(A)) = {[a1, ... , an] ⇤�X

1�j1<···<jk�n

kY

i=1

pi (aji ) | k ⇥ N, pi ⇥ P(A)}

Map data structures to non-negative rational numbersp : JAK ! Q+

0

Page 71: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Multivariate Resource Polynomials [POPL’11]

Are non-negative linear combinations of the following base polynomials:

P(Int) = {a ⇥� 1}

P(A1,A2) = {(a1, a2) ⇤� p1(a1) · p2(a2) | pi ⇥ P(Ai )}

P(L(A)) = {[a1, ... , an] ⇤�X

1�j1<···<jk�n

kY

i=1

pi (aji ) | k ⇥ N, pi ⇥ P(A)}

Map data structures to non-negative rational numbersp : JAK ! Q+

0

Important innovation: sigma-pi formula for data

structures

Page 72: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Resource Polynomials: Examples

P(L(A)) = {[a1, ... , an] ⇤�X

1�j1<···<jk�n

kY

i=1

pi (aji ) | k ⇥ N, pi ⇥ P(A)}

Page 73: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Resource Polynomials: Examples

P(L(A)) = {[a1, ... , an] ⇤�X

1�j1<···<jk�n

kY

i=1

pi (aji ) | k ⇥ N, pi ⇥ P(A)}

[a1, ... , an] 7! 8n + 3

Page 74: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Resource Polynomials: Examples

P(L(A)) = {[a1, ... , an] ⇤�X

1�j1<···<jk�n

kY

i=1

pi (aji ) | k ⇥ N, pi ⇥ P(A)}

[a1, ... , an] 7! 8n + 3

[a1, ... , an] 7! 36

✓n

3

◆+ 16

✓n

2

◆+ 20n + 3

Page 75: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Resource Polynomials: Examples

P(L(A)) = {[a1, ... , an] ⇤�X

1�j1<···<jk�n

kY

i=1

pi (aji ) | k ⇥ N, pi ⇥ P(A)}

[a1, ... , an] 7! 8n + 3

([a1, ... , an], [b1, ... , bm]) 7! 39mn + 6m + 21n + 19

[a1, ... , an] 7! 36

✓n

3

◆+ 16

✓n

2

◆+ 20n + 3

Page 76: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Resource Polynomials: Examples

P(L(A)) = {[a1, ... , an] ⇤�X

1�j1<···<jk�n

kY

i=1

pi (aji ) | k ⇥ N, pi ⇥ P(A)}

[a1, ... , an] 7! 8n + 3

([a1, ... , an], [b1, ... , bm]) 7! 39mn + 6m + 21n + 19

[a1, ... , an] 7! 36

✓n

3

◆+ 16

✓n

2

◆+ 20n + 3

[[a11, ... , a1m1], ... , [an1 , ... a

nmn]] 7! 18

✓n

2

◆+ 12n + 3 +

X

1i<jn

12mi

Page 77: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Automatic Computation of the Bounds

1. Fix a maximal degree of resource polynomials

2. Annotate each type with (yet unknown) coefficients for resource polynomials

Example for degree 2:

General case: index system that enumerates resource polynomials

3. Extract linear constraints for the coefficients during type inference

4. Solve the constraints with an LP solver

((L(int), L(int)), q0,0, q1,0, q2,0, q1,1, q0,1, q0,2)

Page 78: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Automatic Computation of the Bounds

1. Fix a maximal degree of resource polynomials

2. Annotate each type with (yet unknown) coefficients for resource polynomials

Example for degree 2:

General case: index system that enumerates resource polynomials

3. Extract linear constraints for the coefficients during type inference

4. Solve the constraints with an LP solver

((L(int), L(int)), q0,0, q1,0, q2,0, q1,1, q0,1, q0,2)

q0,0 + q1,1nm + q1,0n + q2,0

✓n

2

◆+ q0,1m + q0,2

✓m

2

Page 79: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

• Motivation

• How does automatic resource bound analysis work?

• How well does automatic resource bound analysis work? (Implementation and experiments)

• What are the properties of the LP instances that we get?

Outline

✓✓

Page 80: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Resource Aware ML

• Based on Inria’s OCaml compiler

• ~12,000 lines of code (+ ~29,000 loc form the OCaml compiler)

• Currently we use Coin-Or’s CLP C interface

• Features: • Higher-order functions and polymorphism• User defined inductive types• Parallel evaluation• Side effects• User defined (non-monotone) resource metrics• Upper and lower bounds

Page 81: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Resource Aware ML

• Based on Inria’s OCaml compiler

• ~12,000 lines of code (+ ~29,000 loc form the OCaml compiler)

• Currently we use Coin-Or’s CLP C interface

• Features: • Higher-order functions and polymorphism• User defined inductive types• Parallel evaluation• Side effects• User defined (non-monotone) resource metrics• Upper and lower bounds

Web interface athttp://raml.co

Page 82: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Experimental Evaluation

Page 83: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Micro Benchmarks Evaluation-Step Bounds

Computed Bound Actual Behavior Performance

Quick Sort (Integers) 12n2 + 14n + 3 O(n2) 0.1 s

Split and Sort 16n2 + 46n + 9 O(n2) 2.1 s

Insertion Sort (Strings) 8n2m + 8n2 - 8nm + 4n + 3 O(n2m) 0.91 s

Duplicate Elimination 6n2m + 9n2 - 6nm + 3n + 3 O(n2m) 0.97 s

Longest Common Subsequence 39nm + 6m + 21n + 19 O(nm) 0.36 s

Matrix Multiplication 28xmn + 32xm + 2x + 14n + 21 O(xmn) 1.96 s

Breadth-First Matrix Multiplication 2yz + 15ynmx + 14ynm + 15yn + 104n + 51 O(ynmx) 4.98 s

Dijkstra’s Shortest-Path Algorithm 79.5n2 + 31.5n + 38 O(n2) 2.50 s

In-Place Quick Sort for Arrays 12.25x2 + 52.75x + 3 O(x2) 0.64 s

Page 84: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Quick Sort for Integers Evaluation-step bound vs. measured behavior

Page 85: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Quick Sort for Integers Evaluation-step bound vs. measured behavior

First tight bound for quick sort.

Page 86: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Longest Common Subsequence

Evaluation-step bound vs. measured behavior

Page 87: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Longest Common Subsequence

Evaluation-step bound vs. measured behavior

First automatically derived bound for

LCS.

Page 88: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Insertion Sort for Strings

Evaluation-step bound vs. measured behavior

Page 89: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Insertion Sort for Strings

Evaluation-step bound vs. measured behavior

First automatic bound for a sorting

algorithm for strings.

Page 90: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Macro Benchmarks

1) OCaml’s standard list library list.ml

‣ Evaluation-step bounds for 47 of 51 top-level functions

‣ 428 lines of code; 3.2 seconds on a Macbook Pro

2) CompCert C Compiler

‣ OCaml code extracted from the Coq specification

‣ Evaluation-step bounds for 13 topmost modulesin the dependency graph

‣ 138 of 164 functions bounded; 2740 lines of code; 21min

Page 91: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Macro Benchmarks

1) OCaml’s standard list library list.ml

‣ Evaluation-step bounds for 47 of 51 top-level functions

‣ 428 lines of code; 3.2 seconds on a Macbook Pro

2) CompCert C Compiler

‣ OCaml code extracted from the Coq specification

‣ Evaluation-step bounds for 13 topmost modulesin the dependency graph

‣ 138 of 164 functions bounded; 2740 lines of code; 21min

Problems: Modules and untyped code.

Page 92: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Macro Benchmarks

8 Experimental Evaluation 31

Metric #Funs LOC Time #Const #Lin #Quad #Cubic #Poly #FailAsym.Tight

steps 243 3218 72.10s 16 130 60 28 239 4 225heap 243 3218 70.36s 41 112 60 22 239 4 225

tick 174 2144 64.68s 19 79 53 19 174 0 160CompCert steps 164 2740 1300.91s 32 99 7 0 138 26 137

Table 1: Overview of experimental results.

Example Experiment. To give an impression of the experiments we performed, Figure 11contains the output of an analysis of a challenging function in RAML. The code is an adoption ofan example that has been recently presented by Avanzini et al. [10] as a function that can notbe handled by existing tools. To illustrate the challenges of resource analysis for higher-orderprograms, Avanzini et al. implemented a (somewhat contrived) reverse function rev for listsusing higher-order functions. RAML automatically derives a tight linear bound on the numberof evaluation steps used by rev.

To show more features of our analysis, we modified Avanzini et al.’s rev in Figure 11 byadding an additional argument f and a pattern match to the definition of the function walk. Theresulting type of walk is

(Æ!Æ! bool) ! [(Ø§Æ list)either list; (Ø§Æ list)either list]! (Ø§Æ list)either list

Like before the modification, walk is essentially the append_reverse function for lists. However,we assume that the input lists contain nodes of the form Left a or Right b so that b is a list.During the reverse process of the first list in the argument, we sort each list that is contained ina Right-node using the standard implementation of quick sort (not given here). RAML derivesthe tight evaluation-step bound that is shown in Figure 11. Since the comparison function forquicksort (argument f) is not available, RAML assumes that it does not consume any resourcesduring the analysis. If rev_sort is applied to a concrete argument f then the analysis is repeatedto derive a bound for this instance.

CompCert Evaluation. We also performed an evaluation with the OCaml code that is createdby Coq’s code extraction mechanism during the compilation of the verified CompCert compil-ers [46]. We sorted the files topologically from their dependency requirements, and analyzed 13files from the top. 1 We could not process the files further down the dependency graph becausethey heavily relied on modules which we do not currently support. Using the evaluation-stepmetric, we analyzed 164 functions, 2740 LOC in 1300 seconds.

Figure 12 shows example functions from the CompCert code base. As an artifact from theCoq code extraction, CompCert uses two implementations of the reverse function for lists. Thefunction rev is a naive quadratic implementation that uses append and the function rev’ is anefficient tail-recursive linear implementation. RAML automatically derives precise evaluationstep bounds for both functions. As a result, a Coq user who is inspecting the derived bounds forthe extracted OCaml code is likely to spot performance problems resulting from the use of rev.

Summary of Results. Table 1 contains a compilation of the experimental results. The first 3rows show the results for OCaml libraries, handwritten code, and the OCaml tutorial [48]. The

1A list of analyzed files and functions is included in the TR.

8 Experimental Evaluation 31

Metric #Funs LOC Time #Const #Lin #Quad #Cubic #Poly #FailAsym.Tight

steps 243 3218 72.10s 16 130 60 28 239 4 225heap 243 3218 70.36s 41 112 60 22 239 4 225

tick 174 2144 64.68s 19 79 53 19 174 0 160CompCert steps 164 2740 1300.91s 32 99 7 0 138 26 137

Table 1: Overview of experimental results.

Example Experiment. To give an impression of the experiments we performed, Figure 11contains the output of an analysis of a challenging function in RAML. The code is an adoption ofan example that has been recently presented by Avanzini et al. [10] as a function that can notbe handled by existing tools. To illustrate the challenges of resource analysis for higher-orderprograms, Avanzini et al. implemented a (somewhat contrived) reverse function rev for listsusing higher-order functions. RAML automatically derives a tight linear bound on the numberof evaluation steps used by rev.

To show more features of our analysis, we modified Avanzini et al.’s rev in Figure 11 byadding an additional argument f and a pattern match to the definition of the function walk. Theresulting type of walk is

(Æ!Æ! bool) ! [(Ø§Æ list)either list; (Ø§Æ list)either list]! (Ø§Æ list)either list

Like before the modification, walk is essentially the append_reverse function for lists. However,we assume that the input lists contain nodes of the form Left a or Right b so that b is a list.During the reverse process of the first list in the argument, we sort each list that is contained ina Right-node using the standard implementation of quick sort (not given here). RAML derivesthe tight evaluation-step bound that is shown in Figure 11. Since the comparison function forquicksort (argument f) is not available, RAML assumes that it does not consume any resourcesduring the analysis. If rev_sort is applied to a concrete argument f then the analysis is repeatedto derive a bound for this instance.

CompCert Evaluation. We also performed an evaluation with the OCaml code that is createdby Coq’s code extraction mechanism during the compilation of the verified CompCert compil-ers [46]. We sorted the files topologically from their dependency requirements, and analyzed 13files from the top. 1 We could not process the files further down the dependency graph becausethey heavily relied on modules which we do not currently support. Using the evaluation-stepmetric, we analyzed 164 functions, 2740 LOC in 1300 seconds.

Figure 12 shows example functions from the CompCert code base. As an artifact from theCoq code extraction, CompCert uses two implementations of the reverse function for lists. Thefunction rev is a naive quadratic implementation that uses append and the function rev’ is anefficient tail-recursive linear implementation. RAML automatically derives precise evaluationstep bounds for both functions. As a result, a Coq user who is inspecting the derived bounds forthe extracted OCaml code is likely to spot performance problems resulting from the use of rev.

Summary of Results. Table 1 contains a compilation of the experimental results. The first 3rows show the results for OCaml libraries, handwritten code, and the OCaml tutorial [48]. The

1A list of analyzed files and functions is included in the TR.

CompCert:

Page 93: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

How can we make predictions about compiled code?

Page 94: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Machine Learning Cost Models

How to obtain realistic cost metrics for high-level analysis?

• Treat hardware, compiler, and runtime systems as black box

• Select training programs that cover relevant operations

• Use linear regression to obtain average time and memory costs of operations

• Combine time and memory predictions to get a time model for execution with garbage collection

Page 95: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Bound for List Append on x86

1.6 GHz Intel Core i5-5250U processor

0

5

10

15

20

25

30

35

40

45

0 2 4 6 8 10 12 14 16 18 20

Exe

cutio

n T

ime (

ms)

ErrorActual Time

Expected Time

Page 96: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

• Motivation

• How does automatic resource bound analysis work?

• How well does automatic resource bound analysis work?(Implementation and experiments)

• What are the properties of the LP instances that we get?

Outline

✓✓

Page 97: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Network-Flow Problems

Constraints we derive are almost network-flow problems

Page 98: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Network-Flow Problems

Constraints we derive are almost network-flow problems

Network-flow constraints:X

i

xi �X

j

xj = b

Page 99: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Network-Flow Problems

Constraints we derive are almost network-flow problems

Network-flow constraints:X

i

xi �X

j

xj = b

Inflow.

Page 100: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Network-Flow Problems

Constraints we derive are almost network-flow problems

Network-flow constraints:X

i

xi �X

j

xj = b

Inflow.Outflow.

Page 101: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Network-Flow Problems

Constraints we derive are almost network-flow problems

Network-flow constraints:X

i

xi �X

j

xj = b

Inflow.Outflow.

Constant sink/source.

Page 102: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Network-Flow Problems

Constraints we derive are almost network-flow problems

Network-flow constraints:X

i

xi �X

j

xj = b

Inflow.Outflow.

Constant sink/source.

li xi ui

Page 103: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Network-Flow Problems

Constraints we derive are almost network-flow problems

Network-flow constraints:X

i

xi �X

j

xj = b

Inflow.Outflow.

Constant sink/source.

li xi ui

Flow capacity.

Page 104: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Linear Constraints have a Simple Form

• Pay for constant cost

• Account for size changes

• Recursive call

• Conditional branches

q = q0 + c

q0i = qi + qi+1

q = p

q � p1 q � p2

Page 105: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Linear Constraints have a Simple Form

• Pay for constant cost

• Account for size changes

• Recursive call

• Conditional branches

q = q0 + c

Network constraints.

q0i = qi + qi+1

q = p

q � p1 q � p2

Page 106: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Linear Constraints have a Simple Form

• Pay for constant cost

• Account for size changes

• Recursive call

• Conditional branches

q = q0 + c

Network constraints.

q0i = qi + qi+1

Flow through an edge is used twice.

q = p

q � p1 q � p2

Page 107: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Linear Constraints have a Simple Form

• Pay for constant cost

• Account for size changes

• Recursive call

• Conditional branches

q = q0 + c

Network constraints.

q0i = qi + qi+1

Flow through an edge is used twice.

q = p

q � p1 q � p2

Account for cost recursively.

Page 108: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Linear Constraints have a Simple Form

• Pay for constant cost

• Account for size changes

• Recursive call

• Conditional branches

q = q0 + c

Network constraints.

q0i = qi + qi+1

Flow through an edge is used twice.

q = p

q � p1 q � p2

Account for cost recursively.

Cover cost in both branches (possible

waste).

Page 109: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Accounting for Size Change

X

i=1,...,k

qi

✓n + 1

i

◆= q1 +

X

i=1,...,k�1

qi+1

✓n

i

◆+

X

i=1,...,k

qi

✓n

i

List types:

Potential:

Additive shift: C(q1, ... , qk) = (q1 + q2, ... , qk�1 + qk , qk)

L(q1,...,qk )(A)

�(` : L(q1,...,qk )) =P

i=1,...,k qi�|`|

i

Page 110: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Accounting for Size Change

X

i=1,...,k

qi

✓n + 1

i

◆= q1 +

X

i=1,...,k�1

qi+1

✓n

i

◆+

X

i=1,...,k

qi

✓n

i

potential of a list

List types:

Potential:

Additive shift: C(q1, ... , qk) = (q1 + q2, ... , qk�1 + qk , qk)

L(q1,...,qk )(A)

�(` : L(q1,...,qk )) =P

i=1,...,k qi�|`|

i

Page 111: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Accounting for Size Change

X

i=1,...,k

qi

✓n + 1

i

◆= q1 +

X

i=1,...,k�1

qi+1

✓n

i

◆+

X

i=1,...,k

qi

✓n

i

constant potential of the tail using the shiftpotential of a list

List types:

Potential:

Additive shift: C(q1, ... , qk) = (q1 + q2, ... , qk�1 + qk , qk)

L(q1,...,qk )(A)

�(` : L(q1,...,qk )) =P

i=1,...,k qi�|`|

i

Page 112: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Generation of Linear Constraints

1. It is easy to pass potential to list tails without loss

�((x ::xs) : L~q) + c = �(xs : LC(~q)) + (q1 + c)

2. Pattern: one recursive call and polynomial spill

�((x ::xs):L~q)��(xs:L~q) = �(xs:L(q2,...,qk ,0))+q1

3. It is easy to share potential when aliasing data

�(` : L~q+~p) = �(` : L~q) + �(` : L~p)

Page 113: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Generation of Linear Constraints

1. It is easy to pass potential to list tails without loss

�((x ::xs) : L~q) + c = �(xs : LC(~q)) + (q1 + c)

2. Pattern: one recursive call and polynomial spill

�((x ::xs):L~q)��(xs:L~q) = �(xs:L(q2,...,qk ,0))+q1

C(q1, ... , qk) = (q1 + q2, ... , qk�1 + qk , qk)

3. It is easy to share potential when aliasing data

�(` : L~q+~p) = �(` : L~q) + �(` : L~p)

Page 114: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Most Complex Constraints: Sharing

f(x) = g(x,x) Assume cost of g(x,y) is 10|x |·|y |

Bound for f is given as X

i

qi

✓x

i

Page 115: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Most Complex Constraints: Sharing

f(x) = g(x,x) Assume cost of g(x,y) is 10|x |·|y |

Bound for f is given as X

i

qi

✓x

i

Need to covert q|x |2 toX

i

qi

✓x

i

Page 116: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Most Complex Constraints: Sharing

f(x) = g(x,x) Assume cost of g(x,y) is 10|x |·|y |

Bound for f is given as X

i

qi

✓x

i

Need to covert q|x |2 toX

i

qi

✓x

i

q1 = 1·q q2 = 2·q qk = 0·q for k > 2

Constraints:

Page 117: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Most Complex Constraints: Sharing

f(x) = g(x,x) Assume cost of g(x,y) is 10|x |·|y |

Bound for f is given as X

i

qi

✓x

i

Need to covert q|x |2 toX

i

qi

✓x

i

q1 = 1·q q2 = 2·q qk = 0·q for k > 2

Constraints:

Coefficients for change of basis.

Page 118: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Constraint Solving in Practice

• LP solving of our constraints is linear in practice

• CLP and CPLEX are similar; lp_solve is slow (non-linear)

• Large programs (with high degree search space) have around1 million constraints

• Solving 1 million constraints takes about 1 minute with CLP

• Generating the constraints takes about as much time as solving them

Page 119: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Automatic Amortized Resource Analysis

• Precise: bounds are multivariate resource polynomials

• Efficient: inference via linear programming

• Reliable: formal soundness proof of the bounds

• Verifiable: type derivation is a certificate

Current and future research:

• Non-polynomial bounds

• Garbage collection

• Concurrency

• Better hardware models

Page 120: Automatic Resource Bound Analysis and Linear Optimization · 2020. 1. 3. · Bird’s Eye View Type-Based Resource Analysis Compiler Formal Cost Semantics aiT WCET Analyzers Resource

Automatic Amortized Resource Analysis

• Precise: bounds are multivariate resource polynomials

• Efficient: inference via linear programming

• Reliable: formal soundness proof of the bounds

• Verifiable: type derivation is a certificate

Current and future research:

• Non-polynomial bounds

• Garbage collection

• Concurrency

• Better hardware models

Web interface athttp://raml.co