Abstract
This paper describes a new approach to compiling and optimizing array languages for parallel machines. This approach first decomposes →ray language operations into factors, where each factor corresponds to a different communication or computation structure. Optimizations are then achieved by combining, or joining, these factors. Because factors preserve high level information about array operations, the analysis necessary to perform these join operations is simpler than that required for scalar programs. In particular, we show how data parallel programs written in the ZPL programming language are compiled and optimized using the factor-join approach, and we show that a small number of factors are sufficient to represent ZPL programs.
This research was supported in part by ARPA Grant N00014-92-J-1824.
Preview
Unable to display preview. Download preview PDF.
References
Saman P. Amarasinghe, Jennifer M. Anderson, Monica S. Lam, and Amy W. Lim. An overview of a compiler for scalable parallel machines. In Sixth Workshop on Languages and Compilers for Parallel Computing, August 1993.
Ray Barriuso and Allan Knies. SHMEM user's guide for C. Technical report, Cray Research Inc., June 1994.
G. E. Blelloch, S. Chatterjee, J. C. Hardwick, J. Sipelstein, and M. Zagha. Implementation of a portable nested data-parallel language. Journal of Parallel and Distributed Computing, 21(1):4–14, April 1994.
Guy E. Blelloch. NESL: A nested data-parallel language (version 2.6). Technical Report CMU-CS-93-129, School of Computer Science, Carnegie Mellon University, 1993.
Timothy A. Budd. An APL compiler for a vector processor. ACM Transactions on Programming Languages and Systems, 6(3):297–313, July 1984.
Steve Carr, Kathryn S. McKinley, and Chau-Wen Tseng. Compiler optimizations for improved data locality. In Proceedings of the International Conference on Architectural Support for Programming Languages and Operating Systems, October 1994. San Jose, CA.
Bradford L. Chamberlain, Sung-Eun Choi, and Lawrence Snyder. Ironman: An architecture indepedent communication interface for parallel computers, submitted for publication, 1996.
Marios D. Dikaiakos, Calvin Lin, Daphne Manoussaki, and Diana E. Woodward. The portable parallel implementation of two novel mathematical biology algorithms in ZPL. In Ninth International Conference on Supercomputing, 1995.
Michael Gerndt. Updating distributed variables in local computations. Concurrency-Practice and Experience, 2(3):171–193, September 1990.
R. Greenlaw and L. Snyder. Achieving speedups for APL on an SIMD distributed memory machine. International Journal of Parallel Programming, 19(2):111–127, April 1990.
Manish Gupta and Prithviraj Banerjee. PARADIGM: A compiler for automatic data distribution on multicomputers. In International Conference on Supercomputing, July 1993.
Manish Gupta, Sam Midkiff, Edith Schonberg, Ven Seshadri, David Shields, KoYang Wang, Wai-Mee Ching, and Ton Ngo. An HPF compiler for the IBM SP2. In Proceedings of Supercomputing '95, December 1995.
Philip J. Hatcher, Anthony J. Lapadula, Robert R. Jones, Michael J. Quinn, and Ray J. Anderson. A production-quality C* compiler for hypercube multicomputers. In Proceedings of Third ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, April 1991.
High Performance Fortran Forum. High Performance Fortran Specification Version 1.1. November 1994.
Kenneth E. Iverson. A Programming Language. Wiley, 1962.
Dz-Ching R. Ju, Chaun-Lin Wu, and Paul Carini. The classification, fusion, and parallelization of array language primitives. IEEE Transactions on Parallel and Distributed Systems, 5(10):1113–1120, October 1994.
E Christopher Lewis and Calvin Lin. Array contraction in array languages. Technical report, University of Washington, Department of Computer Science and Engineering, 1996. Forthcoming.
E Christopher Lewis, Calvin Lin, Lawrence Snyder, and George Turkiyyah. A portable parallel n-body solver. In D. Bailey, P. Bjorstad, J. Gilbert, M. Mascagni, R. Schreiber, H. Simon, V. Torczon, and L. Watson, editors, Proceedings of the Seventh SIAM Conference on Parallel Processing for Scientific Computing, pages 331–336. SIAM, 1995.
C. Lin, L. Snyder, R. Anderson, B. Chamberlain, S. Choi, G. Forman, E. Lewis, and W. D. Weathersby. ZPL vs. HPF: A comparison of performance and programming style. Technical Report 95-11-05, Department of Computer Science and Engineering, University of Washington, 1994.
Calvin Lin. ZPL language reference manual. Technical Report 94-10-06, Department of Computer Science and Engineering, University of Washington, 1994.
Calvin Lin and Lawrence Snyder. SIMPLE performance results in ZPL. In Keshav Pingali, Uptal Banerjee, David Gelernter, Alexandra Nicolau, and David Padua, editors, Workshop on Languages and Compilers for Parallel Computing, pages 361–375. Springer-Verlag, 1994.
Ton A. Ngo. The Effectiveness of Two Data Parallel Languages, HPF and ZPL. PhD thesis, University of Washington, Department of Computer Science, 1996. In preparation.
C. D. Polychronopoulos, M. B. Girkar, M. R. Haghighat, C. L. Lee, B. P. Leung, and D. A. Schouten. The structure of Parafrase-2: an advanced parallelizing compiler for C and Fortran. In Workshop on Languages and Compilers for Parallel Computing, pages 423–453, 1990.
George Wilkey Richardson. Evaluation of a parallel Chaos router simulator. Master's thesis, University of Arizona, Department of Electrical and Computer Engineering, 1995.
J.R. Rose and Guy L. Steele Jr. C*: An extended C language for data parallel programming. Technical Report PL 87-5, Thinking Machines Corporation, 1987.
Lawrence Snyder. Foundations of practical aprallel programming languages. In Tony Hey and Jeanne Ferrante, editors, Portability and performance for parallel processing, pages 1–19, New York, 1994. Wiley.
Lawrence Snyder. The ZPL Programmer's Guide. May 1996.
Michael Wolfe. Optimizing Supercompilers for Supercomputers. MIT Press, Cambridge, MA, 1989.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1997 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Chamberlain, B.L., Choi, SE., Lewis, E.C., Lin, C., Snyder, L., Weathersby, W.D. (1997). Factor-join: A unique approach to compiling array languages for parallel machines. In: Sehr, D., Banerjee, U., Gelernter, D., Nicolau, A., Padua, D. (eds) Languages and Compilers for Parallel Computing. LCPC 1996. Lecture Notes in Computer Science, vol 1239. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0017271
Download citation
DOI: https://doi.org/10.1007/BFb0017271
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-63091-3
Online ISBN: 978-3-540-69128-0
eBook Packages: Springer Book Archive