skip to main content
Restructuring symbolic programs for concurrent execution on multiprocessors
Publisher:
  • University of California, Berkeley
Order Number:AAI9006407
Pages:
191
Bibliometrics
Skip Abstract Section
Abstract

C scURARE, the program restructurer described in this dissertation, automatically transforms a sequential Lisp program into an equivalent concurrent program that executes on a multiprocessor.

C scURARE first analyzes a program to find its control and data dependences. This analysis is most difficult for references to structures connected by pointers. C scURARE uses a new data-dependence algorithm, which finds and classifies these dependences. The analysis is conservative and may detect conflicts that do not arise in practice. A programmer can temper and refine its results with declarations.

Dependences constrain the program's concurrent execution because, in general, two conflicting statements cannot execute in a different order without affecting the program's result. A restructurer must know all dependences in order to preserve them. However, not all dependences are essential to produce the program's result. C scURARE attempts to transform the program so it computes its result with fewer conflicts. An optimized program will execute with less synchronization and more concurrency.

C scURARE then examines loops in a program to find those that are unconstrained or lightly constrained by dependences. By necessity, C scURARE treats recursive functions as loops and does not limit itself to explicit program loops. Recursive functions offer several advantages over explicit loops since they provide a convenient framework for inserting locks and handling the dynamic behavior of symbolic programs. Loops that are suitable for concurrent execution are changed to execute on a set of concurrent server processes. These servers execute single loop iterations and therefore need to be extremely inexpensive to invoke.

Restructured programs execute significantly faster than the original sequential programs. This improvement is large enough to attract programmers to a multiprocessor, particularly since it requires little effort on their part. Although restructured programs may not make optimal use of a multiprocessor's parallelism, they make good use of a programmer's time.

Cited By

  1. ACM
    Shaikhha A, Fitzgibbon A, Peyton Jones S and Vytiniotis D Destination-passing style for efficient memory management Proceedings of the 6th ACM SIGPLAN International Workshop on Functional High-Performance Computing, (12-23)
  2. Ma X, Wang J and Dong W (2008). Shape Analysis by Refining on Abstract Evaluation Path, Electronic Notes in Theoretical Computer Science (ENTCS), 207, (137-151), Online publication date: 1-Apr-2008.
  3. ACM
    Trancón y Widemann B A reference-counting garbage collection algorithmfor cyclical functional programming Proceedings of the 7th international symposium on Memory management, (71-80)
  4. ACM
    Muth R and Debray S On the complexity of flow-sensitive dataflow analyses Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (67-80)
  5. ACM
    Hind M, Burke M, Carini P and Choi J (1999). Interprocedural pointer alias analysis, ACM Transactions on Programming Languages and Systems (TOPLAS), 21:4, (848-894), Online publication date: 1-Jul-1999.
  6. ACM
    Minamide Y A functional representation of data structures with a hole Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (75-84)
  7. ACM
    Sagiv M, Reps T and Wilhelm R (1998). Solving shape-analysis problems in languages with destructive updating, ACM Transactions on Programming Languages and Systems (TOPLAS), 20:1, (1-50), Online publication date: 1-Jan-1998.
  8. ACM
    Zhang S, Ryder B and Landi W Program decomposition for pointer aliasing Proceedings of the 4th ACM SIGSOFT symposium on Foundations of software engineering, (81-92)
  9. ACM
    Zhang S, Ryder B and Landi W (2019). Program decomposition for pointer aliasing, ACM SIGSOFT Software Engineering Notes, 21:6, (81-92), Online publication date: 1-Nov-1996.
  10. ACM
    Sagiv M, Reps T and Wilhelm R Solving shape-analysis problems in languages with destructive updating Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (16-31)
  11. ACM
    Su B, Habib S, Zhao W, Wang J and Wu Y A study of pointer aliasing for software pipelining using run-time disambiguation Proceedings of the 27th annual international symposium on Microarchitecture, (112-117)
  12. ACM
    Bowdidge R and Griswold W Automated support for encapsulating abstract data types Proceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering, (97-110)
  13. ACM
    Bowdidge R and Griswold W (2019). Automated support for encapsulating abstract data types, ACM SIGSOFT Software Engineering Notes, 19:5, (97-110), Online publication date: 1-Dec-1994.
  14. ACM
    Levine D and Taylor R Metric-driven reengineering for static concurrency analysis Proceedings of the 1993 ACM SIGSOFT international symposium on Software testing and analysis, (40-50)
  15. ACM
    Levine D and Taylor R (2019). Metric-driven reengineering for static concurrency analysis, ACM SIGSOFT Software Engineering Notes, 18:3, (40-50), Online publication date: 1-Jul-1993.
  16. ACM
    Baker H (1993). Equal rights for functional objects or, the more things change, the more they are the same, ACM SIGPLAN OOPS Messenger, 4:4, (2-27), Online publication date: 1-Oct-1993.
  17. ACM
    Griswold W (2019). Direct update of data flow representations for a meaning-preserving program restructuring tool, ACM SIGSOFT Software Engineering Notes, 18:5, (42-55), Online publication date: 1-Dec-1993.
  18. ACM
    Griswold W Direct update of data flow representations for a meaning-preserving program restructuring tool Proceedings of the 1st ACM SIGSOFT symposium on Foundations of software engineering, (42-55)
  19. ACM
    Hendren L, Hummell J and Nicolau A Abstractions for recursive pointer data structures Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation, (249-260)
  20. ACM
    Hendren L, Hummell J and Nicolau A (2019). Abstractions for recursive pointer data structures, ACM SIGPLAN Notices, 27:7, (249-260), Online publication date: 1-Jul-1992.
  21. ACM
    Griswold W and Notkin D (1992). Computer-aided vs. manual program restructuring, ACM SIGSOFT Software Engineering Notes, 17:1, (33-41), Online publication date: 1-Jan-1992.
  22. ACM
    Pande H and Landi W Interprocedural Def-Use associations in C programs Proceedings of the symposium on Testing, analysis, and verification, (139-153)
  23. ACM
    Landi W and Ryder B Pointer-induced aliasing: a problem classification Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (93-103)
  24. ACM
    Baker H Unify and conquer Proceedings of the 1990 ACM conference on LISP and functional programming, (218-226)
Contributors
  • University of California, Berkeley

Recommendations