scispace - formally typeset
Search or ask a question
Proceedings ArticleDOI

Static structural dependency analysis for parallelization of Java programs

04 Mar 2016-pp 127
TL;DR: This study provides a method to parallelize input java code based on automated generation of dependence graph based on graph based dependency analysis approach for parallelizing java programs.
Abstract: Parallel computing deals with simultaneous computation of problems to speed up the total time required for serial computation. Many problems involving huge number of computations can be sub divided into smaller ones each performing some computation. However to obtain smaller fragments of computation requires dependency analysis among the sub-parts. Manually analyzing each computation for dependencies is a difficult task for developer. In this paper, we are proposing graph based dependency analysis approach for parallelizing java programs. A program consists of sequence of statements, dependency analysis is done to check the ordering of statements in a program and also to identify various programming constructs which are dependent on each other. High level language program can be analyzed on the basis of data flow between variables and communication among functions. This study provides a method to parallelize input java code based on automated generation of dependence graph. Dependence graph depicts the connectivity between the programming constructs i.e variables and functions. When these dependencies are resolved then it is possible to split program into independent modules which can be executed in parallel with each other for achieving high performance.
Citations
More filters
Proceedings ArticleDOI
01 Dec 2018
TL;DR: Experimental results show that the proposed distributed parallelizability analysis of legacy code can effectively identify the parallelizable code fragments, which will be the target objects of refactoring and not limit the type of the loop.
Abstract: With the emergence of cloud computing and big data, migrating legacy systems to a cloud platform has become a trend. To make full use of the parallel advantage of cloud computing, it is necessary to refactor the legacy code according to the programming model of cloud computing. Before that, the parallelizability analysis is the first thing to do. In this paper, an approach is proposed for the distributed parallelizability analysis of legacy code, which is based on the analysis of dependency between loop iterations. According to the categories of the traditional dependency, the dependency between loop iterations is divided into three types, and the judgment rules of the dependency between loop iterations are proposed. Then a Distributed Parallelizability Analysis Tool (DPAT) based on Abstract Syntax Tree (AST) was developed to identify and annotate the parallelizable loops. Experimental results show that the approach can effectively identify the parallelizable code fragments, which will be the target objects of refactoring. In contrast to the existing approaches, our method can identify parallelizability between loop iterations and not limit the type of the loop.

2 citations


Cites methods from "Static structural dependency analys..."

  • ...A method was proposed to parallelize input java code based on automated generation of dependency graph, which analyzes dependency of variable by checking assignment operator and analyzes dependency of function by checking function calls [22]....

    [...]

References
More filters
Journal ArticleDOI
TL;DR: An intermediate program representation, called the program dependence graph (PDG), that makes explicit both the data and control dependences for each operation in a program, allowing transformations to be triggered by one another and applied only to affected dependences.
Abstract: In this paper we present an intermediate program representation, called the program dependence graph (PDG), that makes explicit both the data and control dependences for each operation in a program. Data dependences have been used to represent only the relevant data flow relationships of a program. Control dependences are introduced to analogously represent only the essential control flow relationships of a program. Control dependences are derived from the usual control flow graph. Many traditional optimizations operate more efficiently on the PDG. Since dependences in the PDG connect computationally related parts of the program, a single walk of these dependences is sufficient to perform many optimizations. The PDG allows transformations such as vectorization, that previously required special treatment of control dependence, to be performed in a manner that is uniform for both control and data dependences. Program transformations that require interaction of the two dependence types can also be easily handled with our representation. As an example, an incremental approach to modifying data dependences resulting from branch deletion or loop unrolling is introduced. The PDG supports incremental optimization, permitting transformations to be triggered by one another and applied only to affected dependences.

2,631 citations


"Static structural dependency analys..." refers background in this paper

  • ...In the general case, dependency is defined as a relation D [6], between some numbers of entities where in a change to one of the entities implies a potential change to the others....

    [...]

Proceedings ArticleDOI
01 Dec 2012
TL;DR: Par wiz uses static analysis of the original (binary) program to provide data at a coarser level, moving from individual accesses to complete loops whenever possible, thereby reducing the impact of both sources of inefficiency.
Abstract: This paper describes a tool using one or more executions of a sequential program to detect parallel portions of the program The tool, called Par wiz, uses dynamic binary instrumentation, targets various forms of parallelism, and suggests distinct parallelization actions, ranging from simple directive tagging to elaborate loop transformations The first part of the paper details the link between the program's static structures (like routines and loops), the memory accesses performed by the program, and the dependencies that are used to highlight potential parallelism This part also describes the instrumentation involved, and the general architecture of the system The second part of the paper puts the framework into action The first study focuses on loop parallelism, targeting OpenMP parallel-for directives, including privatization when necessary The second study is an adaptation of a well-known vectorization technique based on a slightly richer dependence description, where the tool suggests an elaborate loop transformation The third study views loops as a graph of (hopefully lightly) dependent iterations The third part of the paper explains how the overall cost of data-dependence profiling can be reduced This cost has two major causes: first, instrumenting memory accesses slows down the program, and second, turning memory accesses into dependence graphs consumes processing time Par wiz uses static analysis of the original (binary) program to provide data at a coarser level, moving from individual accesses to complete loops whenever possible, thereby reducing the impact of both sources of inefficiency

58 citations

Journal ArticleDOI
TL;DR: A systematic literature review on dependency analysis solutions is reported, which results in an overview and assessment of the state-of-the-art and applicability of dependency analysis.
Abstract: When following architecture-driven strategies to develop large software-intensive systems, the analysis of the dependencies is not an easy task. In this paper, we report a systematic literature review on dependency analysis solutions. Dependency analysis concerns making dependencies due to interconnections between programs or system components explicit. The review is practice-driven because its research questions, execution, and reporting were influenced by the practice of a group of software architects at Philips Healthcare MRI. The review results in an overview and assessment of the state-of-the-art and applicability of dependency analysis. The overview provides insights about definitions related to dependency analysis, the sort of development activities that need dependency analysis, and the classification and description of a number of dependency analysis solutions. The contribution of this paper is for both practitioners and researchers. They can take it as a reference to learn about dependency analysis, match their own practice to the presented results, and to build similar overviews of other techniques and methods for other domains or types of systems.

42 citations

01 Jan 2001
TL;DR: This paper attempts to formalize both the definition and characterization of a dependency in a unified approach, and then illustrates how dependencies themselves and the effect of those dependencies upon a system can be efficiently modeled using Conceptual Graphs.
Abstract: Analysis of dependencies between entities is an important part of modeling. Whether the modeling domain is at the enterprise level or at the system or software component level, characterization, representation, and analysis of these dependencies is essential to correctly modeling the domain. For example, it is important to identify and characterize dependencies between both system and software components when trying to determine the extent of and impact of a breach in computer system security or of a malfunction in a component. Analysis of such dependencies is also greatly beneficial in both the requirements and maintenance phases of software engineering. What is needed is a formal characterization of the concept of dependency along with a more formal and unified approach to dependency analysis . This paper introduces the notion of dependency at a general level. In the present literature, an actual definition and characterization of a dependency is usually avoided, and it is difficult to separate the discussion of the dependency from the particular domain of interest. Most of the literature available implies that it is simply “understood” that a dependency can be represented by a directed arc on a graph where the dependent components are the nodes of the graph. Much work in the current literature addresses dependencies in widely varying ways. This paper attempts to formalize both the definition and characterization of a dependency in a unified approach, and then illustrates how dependencies themselves and the effect of those dependencies upon a system can be efficiently modeled using Conceptual Graphs.

40 citations

Proceedings ArticleDOI
11 Nov 2013
TL;DR: A quantitative measure of the security and performance of privilege separation is defined, a graph-based approach to compute the optimal separation based on dynamic information flow analysis is proposed, and the separation process is automatic and does not require expert knowledge of the software.
Abstract: The principle of least privilege requires that software components should be granted only necessary privileges, so that compromising one component does not lead to compromising others. However, writing privilege separated software is difficult and as a result, a large number of software is monolithic, i.e., it runs as a whole without separation. Manually rewriting monolithic software into privilege separated software requires significant effort and can be error prone. We propose ProgramCutter, a novel approach to automatically partitioning monolithic software using dynamic data dependency analysis. ProgramCutter works by constructing a data dependency graph whose nodes are functions and edges are data dependencies between functions. The graph is then partitioned into subgraphs where each subgraph represents a least privilege component. The privilege separated software runs each component in a separated process with confined system privileges. We evaluate it by applying it on four open source software. We can reduce the privileged part of the program from 100% to below 22%, while having a reasonable execution time overhead. Since ProgramCutter does not require any expert knowledge of the software, it not only can be used by its developers for software refactoring, but also by end users or system administrators. Our contributions are threefold: (i) we define a quantitative measure of the security and performance of privilege separation; (ii) we propose a graph-based approach to compute the optimal separation based on dynamic information flow analysis; and (iii) the separation process is automatic and does not require expert knowledge of the software.

39 citations