Skip to main content

Factor-join: A unique approach to compiling array languages for parallel machines

  • New Languages and New Compiler Techniques
  • Conference paper
  • First Online:
Languages and Compilers for Parallel Computing (LCPC 1996)

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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.

    Google Scholar 

  2. Ray Barriuso and Allan Knies. SHMEM user's guide for C. Technical report, Cray Research Inc., June 1994.

    Google Scholar 

  3. 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.

    Article  Google Scholar 

  4. 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.

    Google Scholar 

  5. Timothy A. Budd. An APL compiler for a vector processor. ACM Transactions on Programming Languages and Systems, 6(3):297–313, July 1984.

    Article  Google Scholar 

  6. 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.

    Google Scholar 

  7. Bradford L. Chamberlain, Sung-Eun Choi, and Lawrence Snyder. Ironman: An architecture indepedent communication interface for parallel computers, submitted for publication, 1996.

    Google Scholar 

  8. 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.

    Google Scholar 

  9. Michael Gerndt. Updating distributed variables in local computations. Concurrency-Practice and Experience, 2(3):171–193, September 1990.

    Google Scholar 

  10. 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.

    Article  Google Scholar 

  11. Manish Gupta and Prithviraj Banerjee. PARADIGM: A compiler for automatic data distribution on multicomputers. In International Conference on Supercomputing, July 1993.

    Google Scholar 

  12. 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.

    Google Scholar 

  13. 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.

    Google Scholar 

  14. High Performance Fortran Forum. High Performance Fortran Specification Version 1.1. November 1994.

    Google Scholar 

  15. Kenneth E. Iverson. A Programming Language. Wiley, 1962.

    Google Scholar 

  16. 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.

    Article  Google Scholar 

  17. E Christopher Lewis and Calvin Lin. Array contraction in array languages. Technical report, University of Washington, Department of Computer Science and Engineering, 1996. Forthcoming.

    Google Scholar 

  18. 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.

    Google Scholar 

  19. 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.

    Google Scholar 

  20. Calvin Lin. ZPL language reference manual. Technical Report 94-10-06, Department of Computer Science and Engineering, University of Washington, 1994.

    Google Scholar 

  21. 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.

    Google Scholar 

  22. 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.

    Google Scholar 

  23. 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.

    Google Scholar 

  24. George Wilkey Richardson. Evaluation of a parallel Chaos router simulator. Master's thesis, University of Arizona, Department of Electrical and Computer Engineering, 1995.

    Google Scholar 

  25. 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.

    Google Scholar 

  26. 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.

    Google Scholar 

  27. Lawrence Snyder. The ZPL Programmer's Guide. May 1996.

    Google Scholar 

  28. Michael Wolfe. Optimizing Supercompilers for Supercomputers. MIT Press, Cambridge, MA, 1989.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

David Sehr Utpal Banerjee David Gelernter Alex Nicolau David Padua

Rights and permissions

Reprints 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

Publish with us

Policies and ethics