Formal callability is the problem of determining for every formal procedure call of a program the set of procedures it may call at run-time. The's information is the key for constructing the procedure call graph o...
详细信息
ISBN:
(纸本)0780350057
Formal callability is the problem of determining for every formal procedure call of a program the set of procedures it may call at run-time. The's information is the key for constructing the procedure call graph of a program, a common prerequisite of static analyses of programs with procedures. Moreover, under specific side-conditions it reduces in interprocedural data-flow analysis the analysis of programs with formal procedure calls to the analysis of programs without formal calls by treating formal calls as higher-order branch statements. We demonstrate that formal callability yields as a by-product the solution of the well-known formal reachability problem. This directly implies that formal callability is in general not decidable. However, we show that formal callability is decidable for programs, where formal procedure parameters do not occur in procedures, which are local to the procedure of their declaration (usually known as programs without global (formal) procedure parameters), but within a time bound which is exponential in the program size. Thus, we complement the new decidability result by introducing in addition a safe approximation of formal callability called potential passability, which can efficiently be computed. Moreover, for programs of mode depth 2 (i.e., formal procedures do not have procedures as parameters) without global procedure parameters, formal callability and potential passability coincide.
We contrast approaches to interproceduralanalysis with those for procedure integration. The latter becomes a baseline for interprocedural optimizations. A set of experimental results show the exact run-time improveme...
详细信息
We contrast approaches to interproceduralanalysis with those for procedure integration. The latter becomes a baseline for interprocedural optimizations. A set of experimental results show the exact run-time improvement due to both procedure integration and the use of interproceduraldata-flow information, as well as the relative impact on compilation time and object code size. In addition, examination of the results produces a definition for a measure of improvement attributable to interprocedural interactions.
Procedure cloning is an interprocedural transformation where the compiler creates specialized copies of procedure bodies. The compiler divides incoming calls between the original procedure and its copies. By carefully...
详细信息
Procedure cloning is an interprocedural transformation where the compiler creates specialized copies of procedure bodies. The compiler divides incoming calls between the original procedure and its copies. By carefully partitioning the calls, the compiler ensures that each clone inherits an environment that allows for better code optimization. This paper presents a three-phase algorithm for deciding when to clone a procedure. The algorithm seeks to avoid unnecessary code growth by considering how the information exposed by cloning will be used during optimization. We present a set of assumptions that bound both the algorithm's running time and code expansion.
As shared-memory multiprocessor systems become widely available, there is an increasing need for tools to simplify the task of developing parallel programs. This paper describes one such tool, the automatic paralleliz...
详细信息
As shared-memory multiprocessor systems become widely available, there is an increasing need for tools to simplify the task of developing parallel programs. This paper describes one such tool, the automatic parallelization system in the Stanford SUIF compiler. This article represents a culmination of a several-year research effort aimed at making parallelizing compilers significantly more effective. We have developed a system that performs full interprocedural parallelization analyses, including array privatization analysis, array reduction recognition, and a suite of scalar dataflow analyses including symbolic analysis. These analyses collaborate in an integrated fashion to exploit coarse-grain parallel loops, computationally intensive loops that can execute on multiple processors independently with no cross-processor synchronization or communication. The system has successfully parallelized large interprocedural loops over a thousand lines of code completely automatically from sequential applications. This article provides a comprehensive description of the analyses in the SUIF system. We also present extensive empirical results on four benchmark suites, showing the contribution of individual analysis techniques both in executing more of the computation in parallel, and in increasing the granularity of the parallel computations. These results demonstrate the importance of interprocedural array data-flowanalysis, array privatization and array reduction recognition;a third of the programs spend more than 50% of their execution time in computations that are parallelized with these techniques. Overall, these results indicate that automatic parallelization can be effective on sequential scientific computations, but only if the compiler incorporates all of these analyses.
The dependencies that exist among definitions and uses of variables in a program are required by many language-processing tools. This paper considers the computation of definition-use and use-definition chains that ex...
详细信息
The dependencies that exist among definitions and uses of variables in a program are required by many language-processing tools. This paper considers the computation of definition-use and use-definition chains that extend across procedure boundaries at call and return sites. Intraprocedural definition and use information is abstracted for each procedure and is used to construct an interproceduralflow graph. This intraprocedural data-flow information is then propagated throughout the program via the interproceduralflow graph to obtain sets of reaching definitions and/or reachable uses for each interprocedural control point, including procedure entry, exit, call, and return. interprocedural definition-use and/or use-definition chains are computed from this reaching information. The technique handles the interprocedural effects of the dataflow caused by both reference parameters and global variables, while preserving the calling context of called procedures. Additionally, recursion, aliasing, and separate compilation are handled. The technique has been implemented using a Sun-4 Workstation and incorporated into an interproceduraldata-flow tester. Results from experiments indicate the practicality of the technique, both in terms of the size of the interproceduralflow graph and the size of the data-flow sets.
Avoiding unnecessary remappings at run-time by means of a strategic distribution assignment placement (DAP) is a major means for improving the run-time efficiency of data-parallel programs on distributed-memory archit...
详细信息
ISBN:
(纸本)9780818680908
Avoiding unnecessary remappings at run-time by means of a strategic distribution assignment placement (DAP) is a major means for improving the run-time efficiency of data-parallel programs on distributed-memory architectures. In Proc. Euro-Par '97, pp. 364-73 (1997), we presented a novel and aggressive intraprocedural algorithm achieving this by eliminating partially redundant and partially dead distribution assignments. In this paper, we show how to enhance this approach interprocedurally. Surprisingly at first sight, it turns out that a straightforward adaption of the intraprocedural approach fails because central properties being valid for the intraprocedural case do not carry over to the interprocedural one, revealing severe anomalies. After discussing the essential differences and analogies of DAP in the interprocedural and interprocedural cases, we show how to overcome these anomalies in order to arrive at a powerful and flexible approach for interprocedural DAP (IDAP). As in the interprocedural case, we get a hierarchy of IDAP algorithms of varying power and efficiency supporting user-customized solutions. First practical experiences underline its importance and effectivity.
暂无评论