Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/178243.178262acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
Article
Free access

A general data dependence test for dynamic, pointer-based data structures

Published: 01 June 1994 Publication History

Abstract

Optimizing compilers require accurate dependence testing to enable numerous, performance-enhancing transformations. However, data dependence testing is a difficult problem, particularly in the presence of pointers. Though existing approaches work well for pointers to named memory locations (i.e. other variables), they are overly conservative in the case of pointers to unnamed memory locations. The latter occurs in the context of dynamic, pointer-based data structures, used in a variety of applications ranging from system software to computational geometry to N-body and circuit simulations.
In this paper we present a new technique for performing more accurate data dependence testing in the presence of dynamic, pointer-based data structures. We will demonstrate its effectiveness by breaking false dependences that existing approaches cannot, and provide results which show that removing these dependences enables significant parallelization of a real application.

References

[1]
Andrew W. Appel. An efficient program for many-body simulation. SIAM J. Sci. $tat. Comput., 6(1):85-103, 1985.
[2]
H. Baker. Unify and conquer (garbage, updating, aliasing, ..) in functional languages. In Proceedings o.f the '90 A CM Conference on LISP and Functional Programming, June 1990.
[3]
U. Banerjee. Loop Transformations for Restructuring Compilers: The Foundations. Kluwer, 1993.
[4]
Josh Barnes and Pier Hut. A hierarchical O(NlogN) force-calculation algorithm. Nature, 324:446-449, 4 December 1986. The code can be obtained from Prof. Barnes at the University of Hawaii, or from jhummel~ics.uci.edu.
[5]
J. Choi, M. Burke, and P. Carini. Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side-effects. In Proceedings of the A CM ~Oth Symposium on Principles o/Programming Languages, pages 232- 245, January 1993.
[6]
D. Coutant. Retargetable high-level alias analysis. in Proceedings of the A CM Symposium on Principles of Programming Languages, pages 110-118, january 1986.
[7]
D.R. Chase, M. Wegman, and F.K. Zadek. Analysis of pointers and structures. In Proceedings of the SIGPLAN '90 Conference on Programming Language Design and Implementation, pages 296-310, 1990.
[8]
P. Denning, J. Dennis, and J. Qualitz. Machines, Languages, and Computation. Prentice- Hall, 1978.
[9]
A. Deutsch. A storeless model of aliasing and its abstractions using finite representations of right-regular equivalence relations, in Proceedings of the IEEE 1992 International Conference on Computer Languages, pages 2-13, April 1992.
[10]
M. Emami, R. Ghiya, and L. Hendren. Contextsensitive interprocedural points-to analysis in the presence of function pointers. In Proceedings of the A CM SIGPLAN Conference on Programming Language Design and Implementation, June 1994.
[11]
Vincent A. Guarna Jr. A technique for analyzing pointer and structure references in parallel restructuring compilers. In Proceedings of the International Conference on Parallel Processing, volume 2, pages 212-220, 1988.
[12]
W. Ludwell Harrison Ill and Z. Ammarguellat. A program's eye view of Miprac. in U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Fifth International Workshop on Lan. guages and Compilers for Parallel Computing, volume 757 of Lecture Notes in Computer Science, pages 512-537. $prlnger-Verlag, 1993.
[13]
W. Ludwell Harrison III. The interprocedural analysis and automatic parallelization of Scheme programs. Lisp and Symbolic Cornpuration, 2(3/4):179-396, 1989.
[14]
L. Hendren, C. Donawa, M. Emami, G. Gao, Justiani, and B. Sridharan. Designing the Me- CAT compiler based on a family of structured intermediate representations. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Fifth international Workshop on Languages and Compilers for Parallel Computing, volume 757 of Lecture Notes in Computer Science, pages 406-420. Springer-Verlag, 1993.
[15]
L. Hendren, J. Hummel, and A. Nicolan. Abstractions for recursive pointer data structures: Improving the analysis and transformation of imperative programs. In Proceedings o/the SIG- PLAN '9~ Conference on Programming Language Design and Implementation, pages 249- 260, June 1992.
[16]
J. Hummel, L. Hendren, and A. Nicolau. A language for conveying the aliasing properties of dynamic, pointer-based data structures. In Proceedings of the 8th International Parallel Processing Symposium, April 1994.
[17]
Laurie J. Hendren and Alexandru Nicolau. Parallelizing programs with recursive data structures. IEEE Trans. on Parallel and Distributed Computing, 1(1):35-47, January 1990.
[18]
Susan Horwitz, Phil Pfeiffer, and Thomas Reps. Dependence analysis for pointer variables, in Proceedings of the SIGPLAN '89 Conference on Programming Language Design and Implementation, pages 28-40, June 1989.
[19]
J. Hopcroft and J. UUman. Introduction to Automata Theory, Languages, and Computation. Addison-Wesley, 1979.
[20]
P. Hudak. A semantic model of reference counting and its abstraction. In Proceedings of the 1986 ACM Conference on LISP and Functional Programming, 1986.
[21]
K. Inoue, H. Seki, and H. Yagi. Analysis of functional programs to detect run-time garbage cells. A CM TOPLAS, 10(4):555-578, October 1988.
[22]
N.D. Jones and S. Muchnick. A flexible approach to interprocedural data flow analysis and programs with recursive data structures. In 9th A CM Symposium on Principles of Programming Languages, pages 66-74, 1982.
[23]
K. Kennedy. Foreword of Supercompilers for Parallel and Vector Computers, 1990. The text is written by Hans Zima with Barbara Chapman, available from the ACM Press.
[24]
David Klappholz, Apostolos D. Kallis, and Xiangyun Kang. Refined C: An update. In David Gelernter, Alexandru Nicolau, and David Padua, editors, Languages and Compilers for Parallel Computing, pages 331-357. The MIT Press, 1990.
[25]
N. Klarlund and M. Schwartzbach. Graph types. In Proceedings of the A CM ~Oth Sglmposlum on Principles of Programming Languages, pages 196-205, January 1993.
[26]
K. Kundert. Sparse matrix techniques. In A. Ruehli, editor, Circuit Analysis, Simulation and Design, pages 281-324. Elsevier Science Publishers B.V. (North-Holland), 186.
[27]
W. Landi. Undecidability of static analysis. A CM Letters on Programming Languages and Systems, 1(4), December 1992.
[28]
J.M. Lucassen and D. K. Gifford. Polymorphic effect systems. In Proceedings 15th A CM Symposium on Principles of Programming Languages, pages 47-57, 1988.
[29]
James R. Larus and Paul N. Hilfinger. Detecting conflicts between structure accesses. In Proceedings of the SIGPLAN '88 Conference on Programming Language Design and Implementation, pages 21-34, June 1988.
[30]
J. Loeliger, R. Metzger, M. Seligman, and S. Stroud. Pointer target tracking- an empirical study. In Proceedings of Supercomputing '91, pages 14-23, November 1991.
[31]
W. Landi and B. Ryder. A safe approximation algorithm for interprocedural pointer aliazing. In Proceedings of the SIGPLAN '9~ Conference on Programming Language Design and Implementation, pages 235-248, June 1992.
[32]
T. Marlowe, W. Landi, B. Ryder, J. Choi, M. Burke, and P. Carini. Pointer-induced aliasing: A clarification. A CM SIGPLAN Notices, 28(9):67-70, September 1993.
[33]
A. Neirynck, P. Panangaden, and A. J. Dereefs. Effect analysis in higher-order languages. International Journal o/Parallel Programming, 18(1):1-37, 1989.
[34]
J. Plevyak, A. Chien, and V. Karamcheti. Analysis of dynamic structures for efficient parallel execution. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Sixth international Workshop on Languages and Compilers for Parallel Computing, volume 768 of Lecture Notes in Computer Science, pages 37-56. Springer-Verlag, 1994.
[35]
F. Preparata and M. Shamos. Computational Geometry: An introdution. Springer-Verlag, 1985.
[36]
David A. Padua and Michael J. Wolfe. Advanced compiler optimization for supercomputers. Communications of the ACM, 29(12), December 1986.
[37]
C. Ruggieri and T. P. Murtagh. Lifetime analysis of dynamically allocated objects. In Proceedings of the 15th A CM Symposium on Principles of Programming Languages, pages 285- 293, 1988.
[38]
Hanan Samet. Applications of Spatial Data Structures: Computer Graphics, Image Processing, and GIS. Addison-Wesley, 1990.
[39]
Thomas A. Standish. Data Structure Techniques. Addison-Wesley, 1980.
[40]
J. Singh, W. Weber, and A. Gupta. SPLASH: Stanford parallel applications for sharedmemory. Technical Report CSL-TR-91-469, Stanford University, 1991. FTP to mojave.stanford.edu.
[41]
E. Wang and P. Hflfinger. Analysis of recursive types in LISP-like languages. In Proceedings of the '9~ A CM Conference on LISP and Func~ tional Programming, pages 216-225, June 1992.
[42]
M. Warren and J. Salmon. Astrophysical nbody simulations using hierarchical tree data structures. In Proceedings of Supercomputing 1992, pages 570-576, November 1992.
[43]
Hans Zima and Barbara Chapman. Supercompilers for Parallel and Vector Computers. ACM Press, 1990.

Cited By

View all
  • (2019)Composable, sound transformations of nested recursion and loopsProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314592(902-917)Online publication date: 8-Jun-2019
  • (2018)K-DTThe Journal of Supercomputing10.1007/s11227-017-2187-374:4(1655-1675)Online publication date: 1-Apr-2018
  • (2017)TreeFuser: a framework for analyzing and fusing general recursive tree traversalsProceedings of the ACM on Programming Languages10.1145/31339001:OOPSLA(1-30)Online publication date: 12-Oct-2017
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PLDI '94: Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
August 1994
360 pages
ISBN:089791662X
DOI:10.1145/178243
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 June 1994

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Article

Conference

PLDI94
Sponsor:

Acceptance Rates

Overall Acceptance Rate 406 of 2,067 submissions, 20%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)62
  • Downloads (Last 6 weeks)14
Reflects downloads up to 30 Aug 2024

Other Metrics

Citations

Cited By

View all
  • (2019)Composable, sound transformations of nested recursion and loopsProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314592(902-917)Online publication date: 8-Jun-2019
  • (2018)K-DTThe Journal of Supercomputing10.1007/s11227-017-2187-374:4(1655-1675)Online publication date: 1-Apr-2018
  • (2017)TreeFuser: a framework for analyzing and fusing general recursive tree traversalsProceedings of the ACM on Programming Languages10.1145/31339001:OOPSLA(1-30)Online publication date: 12-Oct-2017
  • (2017)Developing a method for detecting serial and parallel components in programs2017 6th International Conference on Informatics, Electronics and Vision & 2017 7th International Symposium in Computational Medical and Health Technology (ICIEV-ISCMHT)10.1109/ICIEV.2017.8338553(1-7)Online publication date: Sep-2017
  • (2016)On fusing recursive traversals of K-d treesProceedings of the 25th International Conference on Compiler Construction10.1145/2892208.2892228(152-162)Online publication date: 17-Mar-2016
  • (2015)Tree dependence analysisACM SIGPLAN Notices10.1145/2813885.273797250:6(314-325)Online publication date: 3-Jun-2015
  • (2015)Tree dependence analysisProceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/2737924.2737972(314-325)Online publication date: 3-Jun-2015
  • (2015)An improved nonlinear data dependence testThe Journal of Supercomputing10.1007/s11227-014-1298-371:1(340-368)Online publication date: 1-Jan-2015
  • (2010)How to unleash array optimizations on code using recursive data structuresProceedings of the 24th ACM International Conference on Supercomputing10.1145/1810085.1810123(275-284)Online publication date: 2-Jun-2010
  • (2010)Data dependency analysis using data-write detection techniques2010 2nd International Conference on Software Technology and Engineering10.1109/ICSTE.2010.5608972Online publication date: Oct-2010
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media