Automatic parallelization of divide and conquer algorithms

作者: Radu Rugina , Martin Rinard

DOI: 10.1145/301104.301111

关键词: Computer sciencePointer (computer programming)Automatic parallelizationTheoretical computer sciencePointer analysisSpeedupCompilerRecursionParallel computingDivide and conquer algorithmsSymbolic data analysisCode (cryptography)Escape analysis

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

参考文章(21)
Saman P. Amarasinghe, The suif compiler for scalable parallel machines PPSC. ,(1995)
Mohammad R. Haghighat, Constantine D. Polychronopoulos, Symbolic Analysis: A Basis for Parallelization, Optimization, and Scheduling of Programs languages and compilers for parallel computing. pp. 567- 585 ,(1993) , 10.1007/3-540-57659-2_32
Vincent A. Guarna, A Technique for Analyzing Pointer and Structure References In Parallel Restructuring Compilers. international conference on parallel processing. pp. 212- 220 ,(1988)
J. R. Larus, P. N. Hilfinger, Detecting conflicts between structure accesses programming language design and implementation. ,vol. 23, pp. 24- 31 ,(1988) , 10.1145/960116.53993
Rémi Triolet, Francois Irigoin, Paul Feautrier, Direct parallelization of call statements compiler construction. ,vol. 21, pp. 176- 185 ,(1986) , 10.1145/12276.13329
David Chase, Mark Wegman, F. Ken Zadeck, Analysis of pointers and structures ACM SIGPLAN Notices. ,vol. 39, pp. 343- 359 ,(2004) , 10.1145/989393.989429
Martin C. Rinard, Pedro C. Diniz, Commutativity analysis Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation - PLDI '96. ,vol. 31, pp. 54- 67 ,(1996) , 10.1145/231379.231390
Radu Rugina, Martin Rinard, Pointer analysis for multithreaded programs Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation - PLDI '99. ,vol. 34, pp. 77- 90 ,(1999) , 10.1145/301618.301645
L.J. Hendren, A. Nicolau, Parallelizing programs with recursive data structures IEEE Transactions on Parallel and Distributed Systems. ,vol. 1, pp. 35- 47 ,(1990) , 10.1109/71.80123
Mooly Sagiv, Thomas Reps, Reinhard Wilhelm, Solving shape-analysis problems in languages with destructive updating ACM Transactions on Programming Languages and Systems. ,vol. 20, pp. 1- 50 ,(1998) , 10.1145/271510.271517