Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article
Free access

Automatic parallelization of divide and conquer algorithms

Published: 01 May 1999 Publication History

Abstract

Divide and conquer algorithms are a good match for modern parallel machines: they tend to have large amounts of inherent parallelism and they work well with caches and deep memory hierarchies. But these algorithms pose challenging problems for parallelizing compilers. They are usually coded as recursive procedures and often use pointers into dynamically allocated memory blocks and pointer arithmetic. All of these features are incompatible with the analysis algorithms in traditional parallelizing compilers.This paper presents the design and implementation of a compiler that is designed to parallelize divide and conquer algorithms whose subproblems access disjoint regions of dynamically allocated arrays. The foundation of the compiler is a flow-sensitive, context-sensitive, and interprocedural pointer analysis algorithm. A range of symbolic analysis algorithms build on the pointer analysis information to extract symbolic bounds for the memory regions accessed by (potentially recursive) procedures that use pointers and pointer arithmetic. The symbolic bounds information allows the compiler to find procedure calls that can execute in parallel without violating the data dependences. The compiler generates code that executes these calls in parallel. We have used the compiler to parallelize several programs that use divide and conquer algorithms. Our results show that the programs perform well and exhibit good speedup.

References

[1]
S. Amarasinghe, J. Anderson, M. Lain, and C. Tseng. The SUIF compiler for scalable parallel machines. In Proceedings of the Eighth SIAM Conference on Parallel Processing for Scientific Computing, February 1995.
[2]
W. Blume and R. Eigenmann. Symbolic range propagation. In Proceedings of the 9th International Parallel Processing Symposium, pages 357-363, Santa Barbara, CA, April 1995. IEEE Computer Society Press, Los Alamitos, Calif.
[3]
R. Blumofe, C. Joerg, B. Kuszmaul, C. Leiserson, K. Randall, and Y. Zhou. Cilk: An efficient multithreaded runtime system. In Proceedings of the 5th A CM SIGPLAN Symposium on Principles and Practice of Parallel Programming, Santa Barbara, CA, July 1995. ACM, New York.
[4]
D. Chase, M. Wegman, and F. Zadek. Analysis of pointers and structures. In Proceedings of the SIGPLAN '90 Conference on Program Language Design and Implementation, pages 296-310, White Plains, NY, June 1990. ACM, New York.
[5]
T.H. Cormen, C.E. Leiserson, and R.L. Rivest. Introductions to Algorithms. The MIT Press, Cambridge, Mass., Cambridge, MA, 1990.
[6]
M. Emami, R. Ghiya, and L. Hendren. Contextsensitive interprocedural points-to analysis in the presence of function pointers. In Proceedings of the SIC- PLAN '94 Conference on Program Language Design and Implementation, pages 242-256, Orlando, FL, June 1994. ACM, New York.
[7]
J. Frens and D. Wise. Auto-blocking matrixmultiplication or tracking BLAS3 performance from source code. In Proceedings of the 6th A CM SIGPLAN Symposium on Principles and Practice of Parallel Programming, Las Vegas, NV, June 1997.
[8]
graph? a shape analysis for heap-directed pointers in C. In Proceedings of the gJrd Annual A CM Symposium on the Principles of Programming Languages, pages 1-15, January 1996.
[9]
V. Guarna. A technique for analyzing pointer and structure references in parallel restructuring compilers. Proceedings of the 1988 international Conference on Parallel Processing, August 1988.
[10]
M. Haghighat and C. Polychronopoulos. Symbolic analysis: A basis for parallelization, optimization, and scheduling of programs. In Proceedings " the ... Workshop on Languages and Compilers for Parallel Computing, Portland, OR, August 1993.
[11]
M.W. Hall, S.P. Amarasinghe, B.tt. Murphy, S. Liao, #,#rl {# q T.#,m T"h.-,*,a,-t;r,-r,-r,#,vc,#.,-r.-#;r,-,#vallollc#,#,#_ #--#,A,LVL.#.;. a.,fl.#aJJ. J#,.,v,.,.,v,tu.6 #.,vl, l#l,l.=l#.,--#,l, lt,l#a,t }#ts.#z. casjc#asos-s #L#- ing an interprocedural parallelizing compiler. In Proceedings of Supereomputing '95, San Diego, CA, December 1995. IEEE Computer Society Press, Los Alamitos, Calif.
[12]
P. Havlak and K. Kennedy. An implementation of interprocedural bounded regular section analysis. 1#'b'1#" "l#nsactions on Parallel and Distributed Systems, 2(3):350-360, July 1991.
[13]
L. Hendren and A. Nicolau. Parallelizing programs with recursive data structures. IEEE Transactions on Paraltet and Distributed " .... 1 "# ... #- Jwtuaxy #u. oys#emn, x ) :oo-, t, 1
[14]
J. Larus and P. Hilfinger. Detecting conflicts between structure accesses. In Proceedings of the SIGPLAN '88 Conference on Program Language Design and Imple-
[15]
E. Molar, D. Kranz, and R. Halstead. Lazy task creation: A technique for increasing the granularity of parallel programs. In Proceedings of the 1990 A CM Conference on Lisp and Functional Programming, pages 185-- 197. ACM, New York, June 1990.
[16]
r1#1 # #1^^,. XX T.T.II .--.1 1:) #,f .. k. T).A;.#.A ..#. L.m,u.i .#. #.v,uuu, #vx. xxa., #,a u. ;v-uxl.,.,. . x#.,.o,w,#, (,.#.#y data-flow analysis for run-time paraUelization. In Proceedings of the 1998 A CM International Conference on Supercomputing, Melbourne, Australia, July 1993.
[17]
M l:/innrri and p F/isis. #Amrn,tat.ivity analvri.#" h new framework for parallelizing compilers. In Proceedings of the SIGPLAN '96 Conference on Program Language Design and Implementation, pages 54--67, Philadelphia, PA, May 1996. ACM, New York.
[18]
R. Rugina and M. Rinard. Pointer analysis for multithreaded programs, in Proceedings of the SIGPLAN '99 Conference on t'rogram Language ues;gn and #mplementation, Atlanta, GA, May 1999.
[19]
M. Sagiv, T. Reps, and R. Wilhelm. Solving shapeanalysis problems in languages with destructive updatand Systems, 20(1)'1-50, January 1998.
[20]
R,. T#rioieL F. irigoin, and P. Feautrier. Direct parallelization of CALL statements. In Proceedings of the ~ _q!GPLAN '86 Symposium on Compiler Construction, Palo Alto, CA, June 1986.
[21]
D 1XT:I ... .1 x i r ___ r#m __. .. L-#j #. vv-,ou,. #,u #,.,#m, -.mcm,# context-sensitive pointer analysis for C programs. In Proceedings of the SIGPLAN '95 Conference on Program Language De. sign and Implementation, La Jolla, CA, June~ 1995. ACM, New York.

Cited By

View all
  • (2021)Safer at any speed: automatic context-aware safety enhancement for RustProceedings of the ACM on Programming Languages10.1145/34854805:OOPSLA(1-23)Online publication date: 15-Oct-2021
  • (2020)Binary-level data dependence analysis of hot execution regions using abstract interpretation at runtimePLOS ONE10.1371/journal.pone.023090415:4(e0230904)Online publication date: 9-Apr-2020
  • (2020)IR-Level Dynamic Data Dependence Using Abstract Interpretation Towards Speculative ParallelizationIEEE Access10.1109/ACCESS.2020.29977158(99910-99921)Online publication date: 2020
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 34, Issue 8
Aug. 1999
192 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/329366
Issue’s Table of Contents
  • cover image ACM Conferences
    PPoPP '99: Proceedings of the seventh ACM SIGPLAN symposium on Principles and practice of parallel programming
    May 1999
    192 pages
    ISBN:1581131003
    DOI:10.1145/301104
    • Chairmen:
    • Marc Snir,
    • Andrew A. Chien
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]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 May 1999
Published in SIGPLAN Volume 34, Issue 8

Check for updates

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)157
  • Downloads (Last 6 weeks)41
Reflects downloads up to 09 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2021)Safer at any speed: automatic context-aware safety enhancement for RustProceedings of the ACM on Programming Languages10.1145/34854805:OOPSLA(1-23)Online publication date: 15-Oct-2021
  • (2020)Binary-level data dependence analysis of hot execution regions using abstract interpretation at runtimePLOS ONE10.1371/journal.pone.023090415:4(e0230904)Online publication date: 9-Apr-2020
  • (2020)IR-Level Dynamic Data Dependence Using Abstract Interpretation Towards Speculative ParallelizationIEEE Access10.1109/ACCESS.2020.29977158(99910-99921)Online publication date: 2020
  • (2020)Safe automated refactoring for intelligent parallelization of Java 8 streamsScience of Computer Programming10.1016/j.scico.2020.102476195(102476)Online publication date: Sep-2020
  • (2019)LernaACM Transactions on Storage10.1145/331036815:1(1-24)Online publication date: 22-Mar-2019
  • (2019)Safe automated refactoring for intelligent parallelization of Java 8 streamsProceedings of the 41st International Conference on Software Engineering10.1109/ICSE.2019.00072(619-630)Online publication date: 25-May-2019
  • (2018)Soft document clustering using a novel graph covering approachBioData Mining10.1186/s13040-018-0172-x11:1Online publication date: 14-Jun-2018
  • (2018)LernaProceedings of the 11th ACM International Systems and Storage Conference10.1145/3211890.3211897(37-48)Online publication date: 4-Jun-2018
  • (2018)A sample implementation for parallelizing Divide-and-Conquer algorithms on the GPUHeliyon10.1016/j.heliyon.2018.e005124:1(e00512)Online publication date: Jan-2018
  • (2015)Generalized Task ParallelismACM Transactions on Architecture and Code Optimization10.1145/272316412:1(1-25)Online publication date: 2-Apr-2015
  • 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