Profiling Java Programs for Parallelism - CiteSeerX
Recommend Documents
namic dependences for Java programs and recommends lo- cations to the .... load, array-store, getfield or putfield instruction, each ob- ject (including arrays) is ... For testing our tool set we use the DaCapo benchmark suite [1] which contains ...
[13] Ehud Shapiro, Algorithmic Program Debugging, MIT Press, Cam- bridge, Massachusetts, 1983. [14] Markus Stumptner and Franz Wotawa, 'Diagnosing ...
Data flow analysis is a technique traditionally used by compilers for code optimization [1], ... In order to perform a comprehensive runtime data flow analysis, it is, ...
Abstract. The pure methods in a program are those that exhibit functional or side effect free behaviour, a useful property in many contexts. How- ever, existing ...
Program analysis plays a key role in many areas of software development, such as per- ... In order to perform a comprehensive runtime data flow analysis, it is, ...
sequential programs into parallel tasks and manages. control dependencies. ... free communication and unlimited processors) 11]. ... shared memory parallel programs. ..... First, it reduces the bookkeeping overheads in the con-. sistency ...
containment for paths in the call-graph: this extends both cost-centre profiling (which .... the parts of the code in which he is interested, though automatic annotation can ...... this the mechanics of cost-centre-stack profiling are considerably mo
â Department of Computer Science. â¡Intel Corporation. University of Colorado. Hillsboro, OR. Boulder, CO 80309. Abstract. In profiling, a tradeoff exists between ...
Exploiting Vertical Parallelism from Answer Set Programs. Enrico Pontelli and Omar El-Khatib. Department of Computer Science. New Mexico State University.
patterns of parallelism in C programs that use recursive data structures. ... The focus of our approach is on detecting coarse-grain parallelism in the ...... The focus of these tech- ... plementation, pages 242{256, Orlando, Florida, June 1994. 2.
Visualizing the Execution of Java Programs. Wim De ... IBM T.J. Watson Research Center ... shows all the method calls on objects of class java/lang/Integer. ..... [11] Zeller, A., Lütkehaus, D. DDDâA free graphical front-end for UNIX debuggers.
Electronic Systems,. University ... guage. â« Programming-language independent: The Design Navigator .... each method in class Container whose signature is in.
... portion of distributed, multithreaded Java programs into formal specification in .... ferent hosts, such as low level message passing with sockets or higher level ...
are presented, the architecture of the Java program analyzing Tool (JATO) based on ..... performance of slicing will be improved considerably. The procedure .... CLDG. MLDG. JATO software measurement tools software testing tools. GUI.
bytecode, our ADiJaC (Automatic Differentiation for Java Class files) tool imple- ..... In short, automatic differentiation is able to generate from a computer code in.
XML, online learning. 1 Introduction ... introductory programming courses (Townhidnejad and. Hilburn, 2002 ... Automated analysis of student programs has the potential to combat ... are common and useful static metrics for computer science ...
May 21, 1999 - CT91] Richard H. Carver and Kuo-Chung Tai. \Replay and ... F+96] Factor M., Farchi E., Lichtenstein Y., and Malka Y. \Testing concurrent pro-.
Sep 11, 1999 - reported in 4], which also translates Java programs into Promela, however ... ods, class inheritance, threads and synchronization prim- itives for modeling ..... However, because Java supports polymorphism where an object ...
Shapiro's Algorithmic Debugging [Sha83] and claim that MBD requires less user interaction for locating the fault. Other papers ...... Ehud Shapiro. Algorithmic ...
Feb 9, 2009 - any graph-based technique that relies on a representation of Java ..... Closest in spirit to our work is [CDFR04], that define a semantics for Java ...
programmer's permission. We call this ... some present watermarking techniques for computer programs ... A sign (called digital certificate) related with an applet.
paper a set o mutant operator is proposed for the Java programming language, and more specifically ..... the call and insert the current thread in the object wait set, temporarily blocking ..... Research Center, Purdue University, March 1989.
Java is becoming an important programming language ... Java for high performance computing [1]. ... e(v) for each node v â V and a communication cost c(e).
where the correctness can be demonstrated with formal tech- niques. The methodology ... ally not applicable in realtime programs, this loop bounds analysis is sufficient for the ...... IEEE Real-Time Systems. Symposium, Orlando FL, USA, Nov.
Profiling Java Programs for Parallelism - CiteSeerX
Profiling Java Programs for Parallelism. Clemens Hammacher, Kevin Streit, Sebastian Hack, Andreas Zeller. Department of Computer Science. Saarland ...
Profiling Java Programs for Parallelism Clemens Hammacher, Kevin Streit, Sebastian Hack, Andreas Zeller Department of Computer Science Saarland University Saarbr¨ucken, Germany {hammacher, streit, hack, zeller}@st.cs.uni-saarland.de Abstract One of the biggest challenges imposed by multi-core architectures is how to exploit their potential for legacy systems not built with multiple cores in mind. By analyzing dynamic data dependences of a program run, one can identify independent computation paths that could have been handled by individual cores. Our prototype computes dynamic dependences for Java programs and recommends locations to the programmer with the highest potential for parallelization. Such measurements can also provide starting points for automatic, speculative parallelization.
1. Introduction A central challenge of multi-core architectures is how to leverage their computing power for systems that were not built with parallelism in mind—that is, the vast majority of programs as we know them. Recent years have seen considerable efforts in automatic parallelization, mostly relying on static program analysis [3] to identify sections amenable for parallel execution, and using concepts like transactional memory to preserve data dependences [10]. While these efforts have shown impressive advances, we believe that they will face important scalability issues. The larger a program becomes, the harder it gets to precisely identify dependences between items—not to speak of multilanguage code, or code that already has basic parallelism. At the same time, however, it may well be that it is large systems that offer the highest potential for parallelization. This is due to essential principles of software design: High abstraction, encapsulation, modularity, and hierarchy all keep computation local, while minimizing global interaction between components—which implies that such local computations could also be executed in parallel. To further explore this hypothesis, we wanted to measure the potential for parallel execution in recent object-oriented programs. Our approach works as follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
void main(String[] args) { int n = parseInt(args[0]); long[] sums = new long[n]; for (int i=0; i