Download presentation

Presentation is loading. Please wait.

Published byAugustus Wand Modified over 2 years ago

1
THE WORKER / WRAPPER TRANSFORMATION Graham Hutton and Andy Gill

2
1 What Is It? program wrapper worker A technique for changing the type of a program in order to improve its performance:

3
2 This Talk zTechnique has been used by compiler writers for many years, e.g. GHC since 1991; zBut is little known in the wider community, and has never been described precisely; zWe explain, formalise and explore the generality of the worker/wrapper transformation.

4
3 Fixed Points ones = 1 : ones ones = fix body body xs = 1 : xs can be rewritten as: fix f = f (fix f) The key to formalising the technique is the use of explicit fixed points. For example:

5
4 The Problem A Type of the desired worker. Type of the original program. B Suppose we wish to change the type of a recursive program, defined by prog = fix body.

6
5 Assumptions We assume conversion functions A can be faithfully represented by B. such that: wrap. unwrap = id A AB wrap unwrap

7
6 Let’s Calculate! 6 prog fix body = fix (wrap. unwrap. body) = fix (id A. body) = wrap work = wrap (fix (unwrap. body. wrap)) = Rolling rule.

8
7 Summary prog We have derived the following factorisation: Wrapper of type B A. Recursive program of type A. wrap = Recursive worker of type B. work

9
8 The Final Step We simplify work = fix (unwrap. body. wrap) unwrapwrap and to eliminate the overhead of repeatedly converting between the two types, by fusing together

10
9 The Worker / Wrapper Recipe ① Express the original program using fix; ② Choose the new type for the program; ③ Define appropriate conversion functions; ④ Apply the worker/wrapper transformation; ⑤ Simplify the resulting definitions.

11
10 Example - Reverse How can we improve: rev [] = [] rev (x:xs) = rev xs ++ [x] Step 1 - express the program using fix rev = fix body body f [] = [] body f (x:xs) = f xs ++ [x] Quadratic time.

12
11 Step 2 - choose a new type for the program [a] [a] [a] abs rep where rep xs = (xs ++) abs f = f [] Key idea (Hughes): represent the result list as a function.

13
12 Step 3 – define conversion functions [a] [a] wrap unwrap where unwrap f = rep. f wrap g = abs. g Satisfies the worker/wrapper assumption. [a] [a] [a]

14
13 Step 4 – apply the transformation rev = wrap work work = fix (unwrap. body. wrap) Step 5 – simplify the result rev :: [a] [a] rev xs = work xs [] Expanding out wrap.

15
14 Using properties of rep and Worker/wrapper fusion property. we obtain a linear time worker: work :: [a] [a] [a] work [] ys = ys work (x:xs) ys = work xs (x:ys) unwrap (wrap work) work =

16
15 Notes zOnce the decision to use Hughes lists is made, the derivation itself is straightforward; zNo induction is required, other than the implicit use to verify that lists form a monoid; zFast reverse fits naturally into our paradigm, but simpler derivations are of course possible.

17
16 Example - Unboxing Int Int More efficient worker that uses unboxed integers. Type of a simple factorial function. Int ♯ Int ♯ Note: this is how GHC uses worker/wrapper.

18
17 Example - Memoisation More efficient worker that uses a memo table. Type of a simple Fibonacci function. Nat Nat Stream Nat

19
18 Example - Continuations Expr Mint More efficient worker that uses success and failure continuations. Type of a simple evaluation function that may fail, where Mint = Maybe Int. Expr (Int Mint) Mint Mint

20
19 Summary zGeneral technique for changing the type of a program to improve its performance; zStraightforward to understand/apply, requiring only basic equational reasoning principles; zCaptures many seemingly unrelated optimisation methods in a single unified framework.

21
20 Further Work zMechanising the technique; zSpecialised patterns of recursion; zGeneralisation using category theory; zPrograms with effects; zOther application areas.

Similar presentations

OK

Introduction and Preliminaries D Nagesh Kumar, IISc Water Resources Planning and Management: M4L1 Dynamic Programming and Applications.

Introduction and Preliminaries D Nagesh Kumar, IISc Water Resources Planning and Management: M4L1 Dynamic Programming and Applications.

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google

Download ppt on computer vs books debate Ppt on biodegradable and non-biodegradable objects Ppt on manufacturing of turbo generators Ppt on power transmission system in automobile Ppt on natural resources for class 4 Ppt on different types of dance forms of india Ppt on job rotation evaluation Ppt on 60 years of indian parliament house Performance based pay ppt online Hrm ppt on recruitment definition