Siloed Reference Analysis
|
|
- Stephanie Francis
- 5 years ago
- Views:
Transcription
1 Siloed Reference Analysis Xing Zhou 1. Objectives: Traditional compiler optimizations must be conservative for multithreaded programs in order to ensure correctness, since the global variables or memory locations whose address can escape from local scope might be accessed in other threads concurrently. The goal of this project is to enable the optimization opportunity on escaping memory locations while still guarantee correctness for multithreaded programs. 2. Motivational Example: If we can prove that from 10 to 30, there is no concurrent thread that can possibly write to G, we can remove attached to lock(), and LPRE can be done, as shown in Figure 1. 30: tmp2=g ; Siloed Reference Analysis 30: tmp2=g; LPRE 30: tmp2=tmp1; Figure 1. Eliminate χs to enable optimizations To prove absence of concurrent modification, the compiler must understand the concurrency structure of the program. As the example shown below, main() creates a new thread with the entry routine foo(). As in foo(), global variable G cannot have concurrent modification because although there is a def to G in main(), it happens before the new thread being spawned. In contrast, global variable X may have concurrent modification. Thus for this particular example (suppose we have whole program information), χ of G can be removed while χ of X cannot. int main() { 10: G=; 20: pthread_create(foo); 30: X=; } void foo() { X = χ(x) 30: tmp2=g ; }
2 Figure 2. Modifications in different regions 3. Definitions: a. Opaque function calls: the callee function body is not compiled in IPA. b. Understandable opaque function calls: opaque functions with understandable sideeffects, such as arithmetical functions, and synchronizations c. Synchronizations: a special subset of understandable opaque functions. Currently only pthread synchronizations primitives are recognized. d. Memory locations: variables (LDID/STID ST) and the objects pointed by pointers (ILOAD/ISTORE). To unify the representation of memory locations, alias tags are used as virtual memory locations. e. Siloed reference: if in PU f, memory location X cannot be modified concurrently by other threads, the read to X is said to be siloed read in PU f. On the other hand, memory location Y cannot be used (read) concurrently by other threads, the write to X is said to be siloed write in PU f. In this document, siloed reference only refers to siloed read. 4. Main Data Structures: a. PCG_NODE: the PU node in PCG, corresponding to IPA_NODE in IPA_CALL_GRAPH. Figure 3. Structure of class PCG_NODE
3 Key fields in PCG_NODE: _flags: derived from PCG_NODE_BASE. It is a bit-vector with 3 possible flags: o PCG_SPAWNER: indicates that this PU may call pthread_create either directly or indirectly; o PCG_SPAWNEE: indicates that this PU may be executed in a child thread (the entry of the child thread or called in child thread); o PCG_FOLLOW: indicates that this PU may be called after pthread_create is called (either directly or indirectly) in some execution path. Note that the above flags can be applied to a PU the same time. _store_set: the set of alias tags for statements with memory write (STID/ISTORE) _follow_store_set: the set of alias tags for statements with memory write and can be reached from a callsite whose callee routine is either pthread_create or a PU with PCG_SPAWNER tag set. _siloed_ref_set: the alias tag set of the memory locations that are siloed in this PU. The memory locations must occurs in this PU Propagate_up():derived from PCG_NODE_BASE. Propagate flag(s) (PCG_SPAWNER) upwards (from callee to caller) in IPA_CALL_GRAPH. Propagate_down():derived from PCG_NODE_BASE. Propagate flag(s) (PCG_SPAWNEE and PCG_FOLLOW) downwards (from caller to callee) in IPA_CALL_GRAPH. b. IPA_PCG: Procedural Concurrency Graph Figure 4. Structure of class IPA_PCG i. _pcg_node_vec: vector of PCG_NODEs contained. ii. _ipa_node_to_pcg_node_map: map from IPA_NODE to its corresponding PCG_NODE. iii. st_to_node_vec_map: map from ST to a list of PCG_NODEs. Used to handle indirect calls. iv. The construction of PCG is done within the constructor of IPA_PCG. 1. Flow_insensitive_traverse(): do flow insensitive traverse for the PU to build _store_set.
4 2. Flow_sensitive_traverse(): do flow sensitive traverse for the PU to build _follow_store_set. v. Collect_siloed_references(): collect the siloed reference set for each PU. vi. Get_siloed_references():return the siloed reference set for each PU. Used to write BE summary c. IPA_PCG *IPA_Concurrency_Graph: a global pointer to the PCG instance. 5. Interface: The main interfaces of siloed reference analysis are in class IPA_PCG. The analysis should be done in IPA_LINK and the analysis results are written into BE summary. There is a global pointer to the PCG instance: IPA_Concurrency_Graph. The interface functions are listed below: a. Constructor: PCG construction. It can be used to create a PCG instance to initialize IPA_Concurrency_Graph in Perform_Interprocedural_Analysis() during IPA_LINK. b. Collect_siloed_references(): do siloed reference analysis after IPA_Concurrency_Graph is initialized. c. Get_siloed_references(): get the set of siloed reference alias tags for each PU. 6. Algorithm: a. Step 1: Compute _flags of PCG_NODE for each PU (build PCG) i. PCG_SPAWNER flag: If PU may call pthread_create directly, set PCG_SPAWNER flag for its PCG_NODE ii. Propagate PCG_SPAWNER flag: If the PCG_NODE for PU has PCG_SPAWNER flag set, set PCG_SPAWNER flag for all of callers PCG_NODEs (call graph needed). Do this recursively until PCG is not changed. iii. PCG_SPAWNEE flag: If PU occurs as an argument of pthread_create, set PCG_SPAWNEE flag for its PCG_NODE iv. Propagate PCG_SPAWNEE flag: If the PCG_NODE for PU has PCG_SPAWNEE flag set, set PCG_SPAWNEE flag for all of callees PCG_NODEs (call graph needed). Do this recursively until PCG is not changed. v. PCG_FOLLOW flag: For each PU with PCG_SPAWNER flag set but without PCG_SPAWNEE flag set, start from each callsite with the callee is either pthread_create or a PU with PCG_SPAWNER flag set, do a DFS search to find every reachable callsite. Set PCG_FOLLOW flag for callee PUs of all the reachable callsites. vi. Propagate PCG_FOLLOW flag: If the PCG_NODE for PU has PCG_FOLLOW flag set, set PCG_FOLLOW flag for all of callees PCG_NODEs (call graph needed). Do this recursively until PCG is not changed.
5 b. Step 2: Compute interference set: compute the set of memory locations that can be modified in the concurrent part of the program. i. For each PU with PCG_SPAWNEE or PCG_FOLLOW flag set, traverse function body to collect the memory locations (alias tag) that can be modified, e.g., the operand of STID and ISOTRE. ii. For each PU with PCG_SPAWNER flag set, start from each callsite with the callee is either pthread_create or a PU with PCG_SPAWNER flag set, do a DFS search to find all the reachable statements. Collect the memory locations (alias tag) that can be modified in any reachable statements. iii. The whole program interference set is the union of the interference sets of all PUs. iv. Note: only collect the alias tag of the following cases: 1. Real occurrences of memory write, e.g., STID and ISOTRE. 2. χ list of opaque functions, except synchronizations. Please note that the alias tags of entry χs, χ lists of PUs with source and χ lists of synchronizations are not inserted into the interference set. c. Step 3: Compute siloed references in each PU and write into BE summary. i. If a PU has none of the 3 flags set, any memory locations are siloed in this PU. ii. Otherwise, traverse the function body of this PU, collect the alias tags of the memory locations read in this PU. For each alias tag, if it is aliased with any alias tag in the whole program interference set, it is not siloed. Otherwise it is siloed. iii. Write the alias tags of siloed references for each PU into the BE summary. 7. Testing: Splash-II benchmark suit is used to evaluate the efficiency of siloed reference analysis. However, due to Whirl_SSA bugs (siloed reference analysis requires Whirl_SSA enabled in IPL/IPA), not all the benchmarks of Splash-II can be compiled successfully. Table 1 shows static statistics of optimization opportunities enabled by siloed reference analysis. Table 1. Static statistics of optimization opportunities Benchmark Discription LPRE enabled Siloed memory locations fmm Fast Multipole n-body barnes n-body Simulation 3 32 volrend 3D Rendering 2 9 water-nsquared Molecular Dynamics fft Complex 1-D FFT 1 25
6 radix Integer Sort Future work: a. How to use the siloed reference result to update the mod/ref set in BE b. Flow-sensitive, region based siloed reference analysis. This requires modeling the semantics of synchronization primitives, including barrier and join. In order to distinguish different barrier objects, dynamic disambiguation might be needed. c. Sparse algorithm based on SSA representations. Reference: [1] Joisha et al, A technique for the effective and automatic reuse of classical compiler optimizations on multithreaded code, POPL 2011
Accelerating Dynamic Data Race Detection Using Static Thread Interference Analysis
Accelerating Dynamic Data Race Detection Using Static Thread Interference Peng Di and Yulei Sui School of Computer Science and Engineering The University of New South Wales 2052 Sydney Australia March
More informationQ1: /8 Q2: /30 Q3: /30 Q4: /32. Total: /100
ECE 2035(A) Programming for Hardware/Software Systems Fall 2013 Exam Three November 20 th 2013 Name: Q1: /8 Q2: /30 Q3: /30 Q4: /32 Total: /100 1/10 For functional call related questions, let s assume
More informationCalvin Lin The University of Texas at Austin
Interprocedural Analysis Last time Introduction to alias analysis Today Interprocedural analysis March 4, 2015 Interprocedural Analysis 1 Motivation Procedural abstraction Cornerstone of programming Introduces
More informationInterprocedural Analysis. Motivation. Interprocedural Analysis. Function Calls and Pointers
Interprocedural Analysis Motivation Last time Introduction to alias analysis Today Interprocedural analysis Procedural abstraction Cornerstone of programming Introduces barriers to analysis Example x =
More informationCS510 Advanced Topics in Concurrency. Jonathan Walpole
CS510 Advanced Topics in Concurrency Jonathan Walpole Threads Cannot Be Implemented as a Library Reasoning About Programs What are the valid outcomes for this program? Is it valid for both r1 and r2 to
More informationChimera: Hybrid Program Analysis for Determinism
Chimera: Hybrid Program Analysis for Determinism Dongyoon Lee, Peter Chen, Jason Flinn, Satish Narayanasamy University of Michigan, Ann Arbor - 1 - * Chimera image from http://superpunch.blogspot.com/2009/02/chimera-sketch.html
More informationCIS 341 Midterm February 28, Name (printed): Pennkey (login id): SOLUTIONS
CIS 341 Midterm February 28, 2013 Name (printed): Pennkey (login id): My signature below certifies that I have complied with the University of Pennsylvania s Code of Academic Integrity in completing this
More informationThis is the published version of a paper presented at CGO 2017, February 4 8, Austin, TX.
http://www.diva-portal.org This is the published version of a paper presented at CGO 2017, February 4 8, Austin, TX. Citation for the original published paper: Jimborean, A., Waern, J., Ekemark, P., Kaxiras,
More informationWrite Barrier Removal by Static Analysis
Write Barrier Removal by Static Analysis Karen Zee and Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Cambridge, MA 02139 {kkz, rinard@lcs.mit.edu ABSTRACT We present
More informationRegister allocation. Register allocation: ffl have value in a register when used. ffl limited resources. ffl changes instruction choices
Register allocation IR instruction selection register allocation machine code errors Register allocation: have value in a register when used limited resources changes instruction choices can move loads
More informationLast class: Today: Thread Background. Thread Systems
1 Last class: Thread Background Today: Thread Systems 2 Threading Systems 3 What kind of problems would you solve with threads? Imagine you are building a web server You could allocate a pool of threads,
More informationA Context-Sensitive Memory Model for Verification of C/C++ Programs
A Context-Sensitive Memory Model for Verification of C/C++ Programs Arie Gurfinkel and Jorge A. Navas University of Waterloo and SRI International SAS 17, August 30th, 2017 Gurfinkel and Navas (UWaterloo/SRI)
More informationCS 3305 Intro to Threads. Lecture 6
CS 3305 Intro to Threads Lecture 6 Introduction Multiple applications run concurrently! This means that there are multiple processes running on a computer Introduction Applications often need to perform
More informationStatic Versioning of Global State for Race Condition Detection
Static Versioning of Global State for Race Condition Detection Steffen Keul Dept. of Programming Languages and Compilers Institute of Software Technology University of Stuttgart 15 th International Conference
More informationIntroduction Contech s Task Graph Representation Parallel Program Instrumentation (Break) Analysis and Usage of a Contech Task Graph Hands-on
Introduction Contech s Task Graph Representation Parallel Program Instrumentation (Break) Analysis and Usage of a Contech Task Graph Hands-on Exercises 2 Contech is An LLVM compiler pass to instrument
More informationFlow-sensitive rewritings and Inliner improvements for the Graal JIT compiler
1 / 25 Flow-sensitive rewritings and for the Graal JIT compiler Miguel Garcia http://lampwww.epfl.ch/~magarcia/ 2014-07-07 2 / 25 Outline Flow-sensitive rewritings during HighTier Example Rewritings in
More informationMultiple & Repeated! Inheritance!
Multiple & Repeated Inheritance 21-1 Multiple Inheritance Example Combining two abstractions into one» COMPARABLE and NUMERIC are both useful abstractions > Some abstractions make use of both while others
More informationRegister allocation. instruction selection. machine code. register allocation. errors
Register allocation IR instruction selection register allocation machine code errors Register allocation: have value in a register when used limited resources changes instruction choices can move loads
More informationProgramming Languages Lecture 15: Recursive Types & Subtyping
CSE 230: Winter 2008 Principles of Programming Languages Lecture 15: Recursive Types & Subtyping Ranjit Jhala UC San Diego News? Formalize first-order type systems Simple types (integers and booleans)
More informationEscape Analysis for Java
Escape Analysis for Java Michael Bohn Based on the paper by Jong-Deok Choi, Manish Gupta, Mauricio Serrano, Vugranam Sreedhar and Sam Midkiff Escape Analysis? What is Escape Analysis and why do I need
More informationComputing Approximate Happens-Before Order with Static and Dynamic Analysis
Department of Distributed and Dependable Systems Technical report no. D3S-TR-2013-06 May 7, 2018 Computing Approximate Happens-Before Order with Static and Dynamic Analysis Pavel Parízek, Pavel Jančík
More informationGCC Internals Alias analysis
GCC Internals Alias analysis Diego Novillo dnovillo@google.com November 2007 Overview GIMPLE represents alias information explicitly Alias analysis is just another pass Artificial symbols represent memory
More informationG Programming Languages - Fall 2012
G22.2110-003 Programming Languages - Fall 2012 Lecture 4 Thomas Wies New York University Review Last week Control Structures Selection Loops Adding Invariants Outline Subprograms Calling Sequences Parameter
More informationCan We Make It Faster? Efficient May-Happen-in-Parallel Analysis Revisited
Can We Make It Faster? Efficient May-Happen-in-Parallel Analysis Revisited Congming Chen, Wei Huo, Lung Li Xiaobing Feng, Kai Xing State Key Laboratory of Computer Architecture Institute of Computing Technology,
More informationField Analysis. Last time Exploit encapsulation to improve memory system performance
Field Analysis Last time Exploit encapsulation to improve memory system performance This time Exploit encapsulation to simplify analysis Two uses of field analysis Escape analysis Object inlining April
More informationMultiple & Repeated Inheritance
Multiple & Repeated Inheritance 21-1 Multiple Inheritance Example Combining two abstractions into one» COMPARABLE and NUMERIC are both useful abstractions > Some abstractions make use of both while others
More informationIntroduction to pthreads
CS 220: Introduction to Parallel Computing Introduction to pthreads Lecture 25 Threads In computing, a thread is the smallest schedulable unit of execution Your operating system has a scheduler that decides
More informationLSN 13 Linux Concurrency Mechanisms
LSN 13 Linux Concurrency Mechanisms ECT362 Operating Systems Department of Engineering Technology LSN 13 Creating Processes fork() system call Returns PID of the child process created The new process is
More informationFaculty of Electrical Engineering, Mathematics, and Computer Science Delft University of Technology
Faculty of Electrical Engineering, Mathematics, and Computer Science Delft University of Technology exam Compiler Construction in4020 July 5, 2007 14.00-15.30 This exam (8 pages) consists of 60 True/False
More informationG Programming Languages Spring 2010 Lecture 4. Robert Grimm, New York University
G22.2110-001 Programming Languages Spring 2010 Lecture 4 Robert Grimm, New York University 1 Review Last week Control Structures Selection Loops 2 Outline Subprograms Calling Sequences Parameter Passing
More information1 P a g e A r y a n C o l l e g e \ B S c _ I T \ C \
BSc IT C Programming (2013-2017) Unit I Q1. What do you understand by type conversion? (2013) Q2. Why we need different data types? (2013) Q3 What is the output of the following (2013) main() Printf( %d,
More informationAdvanced Compiler Construction
CS 526 Advanced Compiler Construction http://misailo.cs.illinois.edu/courses/cs526 INTERPROCEDURAL ANALYSIS The slides adapted from Vikram Adve So Far Control Flow Analysis Data Flow Analysis Dependence
More informationFavoring Isolated Mutability The Actor Model of Concurrency. CSCI 5828: Foundations of Software Engineering Lecture 24 04/11/2012
Favoring Isolated Mutability The Actor Model of Concurrency CSCI 5828: Foundations of Software Engineering Lecture 24 04/11/2012 1 Goals Review the material in Chapter 8 of the Concurrency textbook that
More informationLearning from Bad Examples. CSCI 5828: Foundations of Software Engineering Lecture 25 11/18/2014
Learning from Bad Examples CSCI 5828: Foundations of Software Engineering Lecture 25 11/18/2014 1 Goals Demonstrate techniques to design for shared mutability Build on an example where multiple threads
More informationCSE 501 Midterm Exam: Sketch of Some Plausible Solutions Winter 1997
1) [10 pts] On homework 1, I asked about dead assignment elimination and gave the following sample solution: 8. Give an algorithm for dead assignment elimination that exploits def/use chains to work faster
More informationShort Notes of CS201
#includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system
More informationRecognizing regular tree languages with static information
Recognizing regular tree languages with static information Alain Frisch (ENS Paris) PLAN-X 2004 p.1/22 Motivation Efficient compilation of patterns in XDuce/CDuce/... E.g.: type A = [ A* ] type B =
More informationTable of Contents. Cilk
Table of Contents 212 Introduction to Parallelism Introduction to Programming Models Shared Memory Programming Message Passing Programming Shared Memory Models Cilk TBB HPF Chapel Fortress Stapl PGAS Languages
More informationCS201 - Introduction to Programming Glossary By
CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with
More informationMaking Context-sensitive Points-to Analysis with Heap Cloning Practical For The Real World
Making Context-sensitive Points-to Analysis with Heap Cloning Practical For The Real World Chris Lattner Apple Andrew Lenharth UIUC Vikram Adve UIUC What is Heap Cloning? Distinguish objects by acyclic
More informationHandling Memory Ordering in Multithreaded Applications with Oracle Solaris Studio 12 Update 2: Part 1, Compiler Barriers
An Oracle White Paper September 2010 Handling Memory Ordering in Multithreaded Applications with Oracle Solaris Studio 12 Update 2: Part 1, Compiler Introduction... 1 What Is Memory Ordering?... 2 Compiler
More informationLecture 14 Pointer Analysis
Lecture 14 Pointer Analysis Basics Design Options Pointer Analysis Algorithms Pointer Analysis Using BDDs Probabilistic Pointer Analysis [ALSU 12.4, 12.6-12.7] Phillip B. Gibbons 15-745: Pointer Analysis
More informationTheoretical Corner: The Non-Interference Property
Theoretical Corner: The Non-Interference Property Marwan Burelle marwan.burelle@lse.epita.fr http://wiki-prog.infoprepa.epita.fr Outline 1 Introduction 2 Theory And Security Models And Policies Non-Interference
More informationPointer and Escape Analysis for Multithreaded Programs
Pointer and Escape Analysis for Multithreaded Programs Alexandru Sălcianu Laboratory for Computer Science Massachusetts Institute of Technology Cambridge, MA 02139 salcianu@lcs.mit.edu Martin Rinard Laboratory
More informationCS 261 Fall Mike Lam, Professor. Threads
CS 261 Fall 2017 Mike Lam, Professor Threads Parallel computing Goal: concurrent or parallel computing Take advantage of multiple hardware units to solve multiple problems simultaneously Motivations: Maintain
More informationInterprocedural Analysis. Dealing with Procedures. Course so far: Terminology
Interprocedural Analysis Course so far: Control Flow Representation Dataflow Representation SSA form Classic DefUse and UseDef Chains Optimizations Scheduling Register Allocation Just-In-Time Compilation
More informationProtection Levels and Constructors The 'const' Keyword
Protection Levels and Constructors The 'const' Keyword Review: const Keyword Generally, the keyword const is applied to an identifier (variable) by a programmer to express an intent that the identifier
More informationDemand-Driven Alias Analysis for C
Demand-Driven Alias Analysis for C Xin Zheng and Radu Rugina Computer Science Department Cornell University Ithaca, NY 14853 {xinz, rugina}@cs.cornell.edu July 2007 Abstract This paper presents a demand-driven,
More informationLecture 27. Pros and Cons of Pointers. Basics Design Options Pointer Analysis Algorithms Pointer Analysis Using BDDs Probabilistic Pointer Analysis
Pros and Cons of Pointers Lecture 27 Pointer Analysis Basics Design Options Pointer Analysis Algorithms Pointer Analysis Using BDDs Probabilistic Pointer Analysis Many procedural languages have pointers
More informationLecture 20 Pointer Analysis
Lecture 20 Pointer Analysis Basics Design Options Pointer Analysis Algorithms Pointer Analysis Using BDDs Probabilistic Pointer Analysis (Slide content courtesy of Greg Steffan, U. of Toronto) 15-745:
More information4.8 Summary. Practice Exercises
Practice Exercises 191 structures of the parent process. A new task is also created when the clone() system call is made. However, rather than copying all data structures, the new task points to the data
More informationIdentifying Inter-task Communication in Shared Memory Programming Models. Per Larsen, Sven Karlsson and Jan Madsen
Identifying Inter-task Communication in Shared Memory Programming Models Per Larsen, Sven Karlsson and Jan Madsen {pl,ska,jm}@imm.dtu.dk Motivation Identifying dependencies between serial parts of OpenMP
More informationConcurrent Programming Lecture 10
Concurrent Programming Lecture 10 25th September 2003 Monitors & P/V Notion of a process being not runnable : implicit in much of what we have said about P/V and monitors is the notion that a process may
More informationCS 4120 Lecture 31 Interprocedural analysis, fixed-point algorithms 9 November 2011 Lecturer: Andrew Myers
CS 4120 Lecture 31 Interprocedural analysis, fixed-point algorithms 9 November 2011 Lecturer: Andrew Myers These notes are not yet complete. 1 Interprocedural analysis Some analyses are not sufficiently
More informationSemantic Analysis. CSE 307 Principles of Programming Languages Stony Brook University
Semantic Analysis CSE 307 Principles of Programming Languages Stony Brook University http://www.cs.stonybrook.edu/~cse307 1 Role of Semantic Analysis Syntax vs. Semantics: syntax concerns the form of a
More informationLexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2005 Handout 6 Decaf Language Wednesday, September 7 The project for the course is to write a
More informationConcurrent Programming in the D Programming Language. by Walter Bright Digital Mars
Concurrent Programming in the D Programming Language by Walter Bright Digital Mars Introduction What is sequential consistency across threads? What are the problems with it? D features that mitigate those
More informationECE 259 / CPS 221 Advanced Computer Architecture II (Parallel Computer Architecture) Parallel Programming
ECE 259 / CPS 221 Advanced Computer Architecture II (Parallel Computer Architecture) Parallel Programming Copyright 2010 Daniel J. Sorin Duke University Slides are derived from work by Sarita Adve (Illinois),
More informationCS711 Advanced Programming Languages Pointer Analysis Overview and Flow-Sensitive Analysis
CS711 Advanced Programming Languages Pointer Analysis Overview and Flow-Sensitive Analysis Radu Rugina 8 Sep 2005 Pointer Analysis Informally: determine where pointers (or references) in the program may
More informationLecture Notes on Decompilation
Lecture Notes on Decompilation 15411: Compiler Design Maxime Serrano Lecture 20 October 31, 2013 1 Introduction In this lecture, we consider the problem of doing compilation backwards - that is, transforming
More informationObject Histories in Java
Object Histories in Java by Aakarsh Nair A thesis presented to the University of Waterloo in fulfillment of the thesis requirement for the degree of Master of Applied Science in Electrical and Computer
More informationLecture Overview. [Scott, chapter 7] [Sebesta, chapter 6]
1 Lecture Overview Types 1. Type systems 2. How to think about types 3. The classification of types 4. Type equivalence structural equivalence name equivalence 5. Type compatibility 6. Type inference [Scott,
More informationConcepts Introduced in Chapter 7
Concepts Introduced in Chapter 7 Storage Allocation Strategies Static Stack Heap Activation Records Access to Nonlocal Names Access links followed by Fig. 7.1 EECS 665 Compiler Construction 1 Activation
More informationMetaFork: A Compilation Framework for Concurrency Platforms Targeting Multicores
MetaFork: A Compilation Framework for Concurrency Platforms Targeting Multicores Presented by Xiaohui Chen Joint work with Marc Moreno Maza, Sushek Shekar & Priya Unnikrishnan University of Western Ontario,
More informationCompilers and Code Optimization EDOARDO FUSELLA
Compilers and Code Optimization EDOARDO FUSELLA Contents Data memory layout Instruction selection Register allocation Data memory layout Memory Hierarchy Capacity vs access speed Main memory Classes of
More informationMELD: Merging Execution- and Language-level Determinism. Joe Devietti, Dan Grossman, Luis Ceze University of Washington
MELD: Merging Execution- and Language-level Determinism Joe Devietti, Dan Grossman, Luis Ceze University of Washington CoreDet results overhead normalized to nondet 800% 600% 400% 200% 0% 2 4 8 2 4 8 2
More informationLecture 16 Pointer Analysis
Pros and Cons of Pointers Lecture 16 Pointer Analysis Basics Design Options Pointer Analysis Algorithms Pointer Analysis Using BDDs Probabilistic Pointer Analysis Many procedural languages have pointers
More informationCompilers. Type checking. Yannis Smaragdakis, U. Athens (original slides by Sam
Compilers Type checking Yannis Smaragdakis, U. Athens (original slides by Sam Guyer@Tufts) Summary of parsing Parsing A solid foundation: context-free grammars A simple parser: LL(1) A more powerful parser:
More informationRegister Allocation. CS 502 Lecture 14 11/25/08
Register Allocation CS 502 Lecture 14 11/25/08 Where we are... Reasonably low-level intermediate representation: sequence of simple instructions followed by a transfer of control. a representation of static
More informationCSE 333 SECTION 9. Threads
CSE 333 SECTION 9 Threads HW4 How s HW4 going? Any Questions? Threads Sequential execution of a program. Contained within a process. Multiple threads can exist within the same process. Every process starts
More informationLexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2010 Handout Decaf Language Tuesday, Feb 2 The project for the course is to write a compiler
More informationCS153: Compilers Lecture 15: Local Optimization
CS153: Compilers Lecture 15: Local Optimization Stephen Chong https://www.seas.harvard.edu/courses/cs153 Announcements Project 4 out Due Thursday Oct 25 (2 days) Project 5 out Due Tuesday Nov 13 (21 days)
More informationCSE 374 Programming Concepts & Tools
CSE 374 Programming Concepts & Tools Hal Perkins Fall 2017 Lecture 22 Shared-Memory Concurrency 1 Administrivia HW7 due Thursday night, 11 pm (+ late days if you still have any & want to use them) Course
More informationFunctions CHAPTER 5. FIGURE 1. Concrete syntax for the P 2 subset of Python. (In addition to that of P 1.)
CHAPTER 5 Functions The main ideas in this chapter are: first-class functions: functions are values that can be passed as arguments to other functions, returned from functions, stored in lists and dictionaries,
More informationSVF: Static Value-Flow Analysis in LLVM
SVF: Static Value-Flow Analysis in LLVM Yulei Sui, Peng Di, Ding Ye, Hua Yan and Jingling Xue School of Computer Science and Engineering The University of New South Wales 2052 Sydney Australia March 18,
More informationLight64: Ligh support for data ra. Darko Marinov, Josep Torrellas. a.cs.uiuc.edu
: Ligh htweight hardware support for data ra ce detection ec during systematic testing Adrian Nistor, Darko Marinov, Josep Torrellas University of Illinois, Urbana Champaign http://iacoma a.cs.uiuc.edu
More informationANALYZING THREADS FOR SHARED MEMORY CONSISTENCY BY ZEHRA NOMAN SURA
ANALYZING THREADS FOR SHARED MEMORY CONSISTENCY BY ZEHRA NOMAN SURA B.E., Nagpur University, 1998 M.S., University of Illinois at Urbana-Champaign, 2001 DISSERTATION Submitted in partial fulfillment of
More informationChapter 3:: Names, Scopes, and Bindings
Chapter 3:: Names, Scopes, and Bindings Programming Language Pragmatics Michael L. Scott Some more things about NFAs/DFAs We said that a regular expression can be: A character (base case) A concatenation
More informationTopic 12: Register Allocation
Topic 12: Register Allocation COS 320 Compiling Techniques Princeton University Spring 2016 Lennart Beringer 1 Structure of backend Register allocation assigns machine registers (finite supply!) to virtual
More informationTyped Assembly Language for Implementing OS Kernels in SMP/Multi-Core Environments with Interrupts
Typed Assembly Language for Implementing OS Kernels in SMP/Multi-Core Environments with Interrupts Toshiyuki Maeda and Akinori Yonezawa University of Tokyo Quiz [Environment] CPU: Intel Xeon X5570 (2.93GHz)
More informationDesign Issues. Subroutines and Control Abstraction. Subroutines and Control Abstraction. CSC 4101: Programming Languages 1. Textbook, Chapter 8
Subroutines and Control Abstraction Textbook, Chapter 8 1 Subroutines and Control Abstraction Mechanisms for process abstraction Single entry (except FORTRAN, PL/I) Caller is suspended Control returns
More informationCS558 Programming Languages Winter 2018 Lecture 4a. Andrew Tolmach Portland State University
CS558 Programming Languages Winter 2018 Lecture 4a Andrew Tolmach Portland State University 1994-2018 Pragmatics of Large Values Real machines are very efficient at handling word-size chunks of data (e.g.
More informationOperating Systems. Lab. Class Project #5
Operating Systems Lab. Class Project #5 Project Plan 6 projects 0. Install xv6 1. System call 2. Scheduling 3. Memory 4. Virtual memory 5. Concurrency 1 6. Concurrency 2 Individual projects 2017-05-16
More informationWritten Presentation: JoCaml, a Language for Concurrent Distributed and Mobile Programming
Written Presentation: JoCaml, a Language for Concurrent Distributed and Mobile Programming Nicolas Bettenburg 1 Universitaet des Saarlandes, D-66041 Saarbruecken, nicbet@studcs.uni-sb.de Abstract. As traditional
More informationFractal: A Software Toolchain for Mapping Applications to Diverse, Heterogeneous Architecures
Fractal: A Software Toolchain for Mapping Applications to Diverse, Heterogeneous Architecures University of Virginia Dept. of Computer Science Technical Report #CS-2011-09 Jeremy W. Sheaffer and Kevin
More informationStatement Basics. Assignment Statements
Statement Basics The meaning of a single statement executed in a state s is a new state s, which reflects the effects of the statement M stmt ( stmt, s) = s N. Meng, S. Arthur 1 Assignment Statements M
More informationCSCI4430 Data Communication and Computer Networks. Pthread Programming. ZHANG, Mi Jan. 26, 2017
CSCI4430 Data Communication and Computer Networks Pthread Programming ZHANG, Mi Jan. 26, 2017 Outline Introduction What is Multi-thread Programming Why to use Multi-thread Programming Basic Pthread Programming
More informationC-LANGUAGE CURRICULAM
C-LANGUAGE CURRICULAM Duration: 2 Months. 1. Introducing C 1.1 History of C Origin Standardization C-Based Languages 1.2 Strengths and Weaknesses Of C Strengths Weaknesses Effective Use of C 2. C Fundamentals
More informationCOLOGO A Graph Language Reference Manual
COLOGO A Graph Language Reference Manual Advisor: Stephen A. Edwards Shen Wang (sw2613@columbia.edu) Lixing Dong (ld2505@columbia.edu) Siyuan Lu (sl3352@columbia.edu) Chao Song (cs2994@columbia.edu) Zhou
More informationThreads. CS3026 Operating Systems Lecture 06
Threads CS3026 Operating Systems Lecture 06 Multithreading Multithreading is the ability of an operating system to support multiple threads of execution within a single process Processes have at least
More informationCSEN 602-Operating Systems, Spring 2018 Practice Assignment 2 Solutions Discussion:
CSEN 602-Operating Systems, Spring 2018 Practice Assignment 2 Solutions Discussion: 10.2.2018-15.2.2018 Exercise 2-1: Reading Read sections 2.1 (except 2.1.7), 2.2.1 till 2.2.5. 1 Exercise 2-2 In Fig.1,
More informationCPSC 213. Introduction to Computer Systems. Readings for Next 2 Lectures. Loops (S5-loop) Control Flow. Static Control Flow. Unit 1d.
Readings for Next 2 Lectures Textbook CPSC 213 Condition Codes - Loops 3.6.1-3.6.5 Introduction to Computer Systems Unit 1d Static Control Flow Control Flow 1 Loops (S5-loop) 2 The flow of control is the
More informationGraph Coverage for Source Code. Data Flow Graph Coverage for Source Code
Graph Coverage for Source Code Data Flow Graph Coverage for Source Code 1 Graph Coverage for Design Elements Use of data abstraction and object oriented software has increased importance on modularity
More informationConcurrency, Thread. Dongkun Shin, SKKU
Concurrency, Thread 1 Thread Classic view a single point of execution within a program a single PC where instructions are being fetched from and executed), Multi-threaded program Has more than one point
More informationmultiple variables having the same value multiple variables having the same identifier multiple uses of the same variable
PART III : Language processing, interpretation, translation, the concept of binding, variables, name and scope, Type, l-value, r-value, reference and unnamed variables, routines, generic routines, aliasing
More informationStatic Conflict Analysis for Multi-Threaded Object Oriented Programs
Static Conflict Analysis for Multi-Threaded Object Oriented Programs Christoph von Praun and Thomas Gross Presented by Andrew Tjang Authors Von Praun Recent PhD Currently at IBM (yorktown( heights) Compilers
More informationQ1: /20 Q2: /30 Q3: /24 Q4: /26. Total: /100
ECE 2035(B) Programming for Hardware/Software Systems Fall 2013 Exam Two October 22 nd 2013 Name: Q1: /20 Q2: /30 Q3: /24 Q4: /26 Total: /100 1/6 For functional call related questions, let s assume the
More informationCS 314 Principles of Programming Languages
CS 314 Principles of Programming Languages Lecture 15: Review and Functional Programming Zheng (Eddy) Zhang Rutgers University March 19, 2018 Class Information Midterm exam forum open in Sakai. HW4 and
More informationA Deterministic Concurrent Language for Embedded Systems
A Deterministic Concurrent Language for Embedded Systems Stephen A. Edwards Columbia University Joint work with Olivier Tardieu SHIM:A Deterministic Concurrent Language for Embedded Systems p. 1/30 Definition
More informationProcesses. Johan Montelius KTH
Processes Johan Montelius KTH 2017 1 / 47 A process What is a process?... a computation a program i.e. a sequence of operations a set of data structures a set of registers means to interact with other
More information