introduction to partial evaluation
play

Introduction to Partial Evaluation Compose Project IRISA / - PowerPoint PPT Presentation

Introduction to Partial Evaluation Compose Project IRISA / University of Rennes 1- INRIA March 1998 IRISA - Compose 1 Goal of Partial Evaluation Fact: many programs have layers of interpretation. Action: removal of interpretation


  1. Introduction to Partial Evaluation Compose Project IRISA / University of Rennes 1- INRIA March 1998 IRISA - Compose 1

  2. Goal of Partial Evaluation ◆ Fact: many programs have layers of interpretation. ◆ Action: removal of interpretation layers. IRISA - Compose 2

  3. Example: Text Formatting ◆ A procedure that produces formatted text with respect to – A control string. – A sequence of values. ◆ It exists in most programming languages – format in Scheme and Common Lisp. – printf in C. ◆ Interpretation layer: the control string IRISA - Compose 3

  4. Example: mini_printf void mini_printf(char* fmt, int *value) { int i; for (i=0 ; *fmt != ’\0’ ; fmt++) if(*fmt != ’%’) putchar(*fmt); else switch(*++fmt) { case ’d’: putint(value[i++]); break; case ’%’: putchar(’%’); break; default: error(); break; } } IRISA - Compose 4

  5. Example: mini_printf Specialization w.r.t. control string " n = %d " void mini_printf_fmt(int* value) { putchar(’n’); putchar(’ ’); putchar(’=’); putchar(’ ’); putchar(value[0]); } IRISA - Compose 5

  6. Assessment ◆ For any sequence of integer values values mini_printf_fmt(values) = mini_printf("n = %d", values) ◆ The control string has been interpreted. ◆ The specialized mini_printf is faster than the original procedure. IRISA - Compose 6

  7. Partial Evaluation: Summary Program ◆ Program specialization. Computations ◆ Automatic transformation. performed at ◆ Systematic transformation. specialization time ◆ Interpretation removal. ◆ Faster specialized programs Computations (usually). performed after specialization ◆ Smaller specialized programs time (sometimes). IRISA - Compose 7

  8. Partial Evaluation: Range of Applications ◆ Operating systems. ◆ Graphics. ◆ Scientific computing. ◆ Software engineering. ◆ Simulation. ◆ ... IRISA - Compose 8

  9. Outline of the Rest of this Introduction ◆ The Basics of Partial Evaluation. ◆ Disclaimers. ◆ Compile-Time �� Run-Time Specialization. ◆ Program ��� Data Specialization. ◆ State of the Art. ◆ Related Techniques. IRISA - Compose 9

  10. The Basics of Partial Evaluation ◆ Partial Evaluation: What? ◆ Partial Evaluation: Why? ◆ Partial Evaluation: When? ◆ Partial Evaluation: How? IRISA - Compose 10

  11. Partial Evaluation: What? ◆ A form of program specialization. ◆ Exploit specialization information. ◆ Automatic process. IRISA - Compose 11

  12. Partial Evaluation R P D R D1 D2 P D2 P � ����������� R P D1 D2 R P P D1 �� �� IRISA - Compose 12

  13. Specialization Information ◆ Partial input (configuration parameters, usage patterns, ...). ◆ Properties on inputs (size, shape, ...). ◆ Abstract data types (sequence as lists, vectors, …). ◆ Hardware features. ◆ ... IRISA - Compose 13

  14. Partial Evaluation: Why? Genericity Performance �� Parameterized, Instantiated, Monolithic, Modular, Specific, Re-usable, Machine-dependant optimizations Platform-independent Examples of generic structures: software layers, simulators, interpreters, ... IRISA - Compose 14

  15. Genericity and Performance? ◆ Manual optimization. ◆ Application/code generators. ◆ Partial evaluation. IRISA - Compose 15

  16. Partial Evaluation: When? Information available at various stages: – Configuration. – Compilation. – Linking. – Execution (sessions). IRISA - Compose 16

  17. Partial Evaluation: How? ◆ How does partial evaluation work? ◆ Impact on the degree of specialization? – Parallel compilation. – Type checking. IRISA - Compose 17

  18. How Does Partial Evaluation Work? Outline: – Constant propagation. – Code folding. – Procedure unfolding (inlining) . – Procedure specialization (cloning/customization) . – Loop unrolling. – Dead-code elimination. IRISA - Compose 18

  19. Constant Propagation Constants are propagated as much as possible throughout all syntactic constructs. – Intra-procedural propagation. – Inter-procedural propagation. – All data types (pointers, arrays, structures, …). IRISA - Compose 19

  20. Example: Constant Propagation Throughout Assignments Values of early bound variables are propagated at specialization time (assuming no redefinition of x before it is used). x = 5; x = 5; ... ... y = x; y = 5; IRISA - Compose 20

  21. Code Folding ◆ Syntactic constructs are folded if their evaluation solely depends on available data. ◆ This operation mimics to the standard evaluation semantics. IRISA - Compose 21

  22. Folding of Arithmetic Operations Early bound computations are performed at specialization time. x = 5; x = 5; ... ... y = x + 10; y = 15; IRISA - Compose 22

  23. Procedure Unfolding ◆ Replacing a procedure call by its body. ◆ Substituting formals by actuals. { f(v, w); if(w) ... update(v,w); void f(int x, int y) else { update(v,-1); if(y) } update(x, y); ... else void f(int x, int y) update(x,-1); {...} ��������������� } IRISA - Compose 23

  24. Procedure Specialization ◆ Propagating constant actuals into the called procedure. ◆ Creating a specialized version of the called procedure . ... f(v, 0); ... ... f_1(v); void f(int x, int y) ... { void f_1(int x) if(y) { update(x, y); else update(x,-1); update(x,-1); } } IRISA - Compose 24

  25. Procedure Specialization Specialized versions are given a unique name. f(v, 0); f_1(v); ... ... f(v, 0); f_1(v); void f(int x, int y) void f_1(int x) { { ... ... } } IRISA - Compose 25

  26. Loop Unrolling Unroll the loop when the test is determined early. for (i=0; *fmt !=’\0’; fmt++) if(*fmt!=’%’) putchar(*fmt); else /* �������������� */ switch(*++fmt) { { putchar(’n’); putchar(’ ’); case ’d’: putint(value[i++]); putchar(’=’); break; putchar(’ ’); case ’%’: putchar(value[0]); putchar(’%’); break; } default: error() ; break; } IRISA - Compose 26

  27. Dead-Code Elimination Eliminating code whose computated results or effects are not used. (assuming debug is false). if(debug) { printf("entering ..."); ������������������� ++cnt_debug; ����� } ��������������������� ��� IRISA - Compose 27

  28. Degree of Specialization Outline: – Amount and kind of data available. – Partial evaluation strategies. – Structure of the source program. IRISA - Compose 28

  29. Amount of Data Available: Complete Data (1/2) ◆ All the computations can be performed at specialization time. ◆ Specializing f w.r.t. 1 and 2 ◆ Result: a constant function. int f_1() int f(int i,int j) { { return 3; return i+j; } } IRISA - Compose 29

  30. Amount of Data Available: Complete Data (2/2) ◆ Some computations cannot be performed at specialization time. ◆ Assuming printf cannot be evaluated at specialization time. ◆ The residual program contains a call to printf . int f(int i, int j) int f_1() { { printf("i=%d / j=%d", printf("i=%d / j=%d", i , j); 1 , 2); return i+j; return 3; } } IRISA - Compose 30

  31. Amount of Data Available: No Data (1/2) When no data are available, the program is reconstructed. int f(int i,int j) int f(int i,int j) { { return i+j; return i+j; } } IRISA - Compose 31

  32. Amount of Data Available: No Data (2/2) Yet, some input-independent optimizations can be performed. – Procedure unfolding. – Use of program constants. IRISA - Compose 32

  33. Amount of Data Available: Partial Data ◆ When some (but not all) of the data are available, the program is – Partly evaluated. – Partly reconstructed. ◆ Mixed computations. IRISA - Compose 33

  34. Approaches To Partial Evaluation Outline: – Online partial evaluation. – Offline partial evaluation. IRISA - Compose 34

  35. Online Partial Evaluation: Principles ◆ All decisions made on the fly. ◆ Based on specialization values. ◆ Interpretation of specialization. IRISA - Compose 35

  36. Online Partial Evaluation Specialization Program Values Partial Evaluator Residual Program IRISA - Compose 36

  37. Online Partial Evaluation: Example Assuming test may be known or unknown at specialization time: 3 possible cases. �������������������������� �� do_this(13); if (test) x=3; ������������������� else �� x=unknown_value; ��������������������������� do_this(unknown_value+10); do_this(x+10); ������������������� ������������������� �� ������������������������������ ��� ������������������� IRISA - Compose 37

  38. Online Partial Evaluation: Assessment ◆ Specialization is precise. ◆ The degree of specialization is difficult to predict. ◆ On-the-fly decision causes overhead for repeatedly processed code when the specialization context is unchanged. ◆ How to perform specialization efficiently at run time? IRISA - Compose 38

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend