Abstract
Earlier work has shown the effectiveness of hand-applied program transformations optimizing high-level interprocess communication mechanisms. This paper describes the static analysis techniques necessary to ensure correct compiler application of the optimizing transformations. These techniques include both dataflow analysis and interprocess analysis. This paper focuses on the analysis of communication mechanisms within program modules; however, the analysis techniques can be generalized to handle inter-module optimization analysis as well. The major contributions of this paper include the application of dataflow analysis and the extension of interprocedural analysis—interprocess analysis—to real concurrent programming languages and, more specifically, to the optimization of interprocess communication and synchronization mechanisms that use both static and dynamic channels. In addition, the use of attribute grammars to perform interprocess analysis is significant. This paper also describes an implementation of both intra-process dataflow and interprocess analysis techniques using attribute grammars.
Similar content being viewed by others
References
American National Standards Institute,Ref. Manual for the Ada Prog. Lang., ANSI/MILSTD-1815A (1983).
N. Gehani and W. D. Roome,The Concurrent C Programming Language, Silicon Press, New Jersey (1989).
B. Liskov and R. Scheifler, Guardians and Actions: Linguistic Support for Robust, Distributed Programs,ACM Trans. on Prog. Lang. and Syst. 5(3):381–404 (July 1983).
P. Brinch Hansen, Distributed Processes: A Concurrent Programming Concept,Comm. of the ACM,21(11):934–941 (November 1978).
A. Burns,Programming in occam, Addison-Wesley (1988).
G. R. Andrews, R. A. Olsson, M. Coffin, I. Elshoff, K. Nilsen, T. Purdin, and G. Townsend, An Overview of the SR Language and Implementation,ACM Trans. on Prog. Lang. and Syst.,10(1):51–86 (January 1988).
C. M. McNamee and R. A. Olsson, Transformations for Optimizing Interprocess Communication and Synchronization Mechanisms,IJPP,19:357–387 (October 1990).
H. Alblas, Iteration of Transformation Passes over Attributed Trees,Acta Informatica,27:1–40 (1989).
W. A. Babich and M. Jazayeri, The Method of Attributes for Data Flow Analysis, Part I. Exhaustive Analysis,Acta Informatica,10:245–264 (1978).
W. A. Babich and M. Jazayeri, The Method of Attributes for Data Flow Analysis, Part II. Demand Analysis,Acta Informatica,10:265–272 (1978).
J. H. Reif and S. A. Smolka, The Complexity of Reachability in Distributed Communicating Processes,Acta Informatica,25(9):333–354 (1988).
G. R. Andrews and R. A. Olsson, Report on the SR Programming Language, Version 1.1. Technical Report CSE-89-11, University of California, Davis Division of Computer Science (May 1989).
C. E. McDowell, A Practical Algorithm for Static Analysis of Parallel Programs,J. of Parallel and Distrib. Computing,6(3):515–536 (June 1989).
P. Cousot and R. Cousot, Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of FixpointsFourth ACM Symp. on the Principles of Prog. Lang., pp. 238–252 (January 1977).
C. M. McNamee, Compiler Optimization of Interprocess Communication and Synchronization Mechanisms, Technical Report CSE-91-19, University of California, Davis PhD Dissertation (June 1991).
R. A. Olsson and C. M. McNamee, An Overview of Compiler Optimization of Interprocess Communication and Synchronization Mechanisms,Proc. of the Int. Conf. on Parallel Proc., Vol. II, pp. 31–35 (August 1991).
M. S. Atkins and R. A. Olsson, Performance of Multitasking and Synchronization Mechanisms in the Programming Language SR,SOFTWARE—Practice and Experience,18(9):879–895 (September 1988).
A. V. Aho, R. Sethi, and J. D. Ullman,Compilers Principles, Techniques, and Tools, Addison-Wesley, Reading, Massachusetts (1986).
M. Weiser, Program Slicing,IEEE Trans. on Software Engineering,SE-10(4):352–357 (July 1984).
R. M. Clapp, L. Duchesneau, R. A. Volz, T. N. Mudge, and T. Schultze, Toward Realtime Performance Benchmarks for Ada,Comm. of the ACM,29(8):760–781 (1986).
M. J. Quinn, P. J. Hatcher, and K. C. Jourdenais, Compiling C* Programs for a Hypercube Multicomputer,Proc. of the ACM/SIGPLAN PPEALS,23:57–65 (September 1988).
F. E. Allen, Interprocedural Data Flow Analysis,Infor. Proc.,74:398–402 (1974).
J. P. Banning, An Efficient Way to Find the Side Effects of Procedure Calls and the Aliases of Variables,Sixth Ann. ACM Symp. on the Principles of Prog. Lang., pp. 29–41 (January 1979).
E. W. Myers, A Precise Inter-procedural Data Flow Algorithm,ACM Symp. on Principles of Prog. Lang., pp. 219–230 (1981).
L. E. Moser, Data Dependency Graphs for Ada Programs,IEEE Trans. on Software Engineering,16(5):498–509 (May 1990).
R. Janicki, P. E. Lauer, M. Koutny, and R. Devillers, Concurrent and Maximally Concurrent Evolution of Nonsequential Systems,Theoret. Comput. Sci.,43:213–238 (1986).
H. Partsch and R. Steinbruggen, Program Transformation Systems,ACM Computing Surveys,15(3):199–236 (September 1983).
K. Pingali and Arvind, Efficient Demand-driven Evaluation, Part 1,ACM Trans. on Prog. Lang. and Syst.,7(2):311–333 (April 1985).
K. Pingali and Arvind, Efficient Demand-driven Evaluation, Part 2,ACM Trans. on Prog. Lang. and Syst. 8(1):109–139 (January 1986).
K. Pingali, M. Beck, R. Johnson, M. Moudgill, and P. Stodghill, Dependence Flow Graphs: An Algebraic Approach to Program Dependencies,Proc. of the 18th ACM Symp. on Principles of Prog. Lang., pp. 67–78 (January 1991).
Author information
Authors and Affiliations
Additional information
This work was supported by NSF under Grant Number CCR88-10617.
Rights and permissions
About this article
Cite this article
McNamee, C.M., Olsson, R.A. An attribute grammar approach to compiler optimization of intra-module interprocess communication. Int J Parallel Prog 20, 181–202 (1991). https://doi.org/10.1007/BF01379317
Received:
Revised:
Issue Date:
DOI: https://doi.org/10.1007/BF01379317