Axis Control in SAC

  • Clemens Grelck
  • Sven-Bodo Scholz
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2670)


High-level array processing is characterized by the composition of generic operations, which treat all array elements in a uniform way. This paper proposes a mechanism that allows programmers to direct effects of such array operations to non-scalar subarrays of argument arrays without sacrificing the high-level programming approach. A versatile notation for axis control is presented, and it is shown how the additional language constructs can be transformed into regular SaC code. Furthermore, an optimization technique is introduced which achieves the same runtime performance regardless of whether code is written using the new notation or in a substantially less elegant style employing conventional language features.


Lawrence Livermore National Laboratory Index Vector Selection Operation Operation Part Axis Control 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    R. Allen and K. Kennedy. Optimizing Compilers for Modern Architectures. Morgan Kaufmann Publishers, 2001. ISBN 1-55860-286-0.Google Scholar
  2. 2.
    I.P Sharp & Associates. SHARP APL Release 19.0 Guide for APL Programmers. I.P Sharp & Associates, Ltd., 1987.Google Scholar
  3. 3.
    D.F. Bacon, S.L. Graham, and O.J. Sharp. Compiler Transformations for High-Performance Computing. ACM Computing Surveys, 26(4):345–420, 1994.CrossRefGoogle Scholar
  4. 4.
    J.P. Benkard. Nested Arrays and Operators — Some Issues in Depth. In Proceedings of the International Conference on Array Processing Languages (APL’92), St.Petersburg, Russia, APL Quote Quad, pages 7–21. ACM Press, 1992.Google Scholar
  5. 5.
    R. Bernecky. An Introduction to Function Rank. In Proceedings of the International Conference on Array Processing Languages (APL’88), Sydney, Australia, volume 18 of APL Quote Quad, pages 39–43. ACM Press, 1988.Google Scholar
  6. 6.
    D.C. Cann. The Optimizing SISAL Compiler: Version 12.0. Lawrence Livermore National Laboratory, Livermore, California, 1993. part of the SISAL distribution.Google Scholar
  7. 7.
    J.T. Feo, P.J. Miller, S.K. Skedzielewski, S.M. Denton, and C.J. Solomon. Sisal 90. In A.P.W. Bohm and J.T. Feo, editors, Proceedings of the Conference on High Performance Functional Computing (HPFC’95), Denver, Colorado, USA, pages 35–47. Lawrence Livermore National Laboratory, Livermore, California, USA, 1995.Google Scholar
  8. 8.
    C. Grelck. Implementing the NAS Benchmark MG in SAC. In Proceedings of the 16th International Parallel and Distributed Processing Symposium (IPDPS’02), Fort Lauderdale, Florida, USA. IEEE Computer Society Press, 2002.Google Scholar
  9. 9.
    C. Grelck and S.-B. Scholz. HPF vs. SAC — A Case Study. In A. Bode, T. Ludwig, W. Karl, and R. Wismüller, editors, Proceedings of the 6th European Conference on Parallel Processing (Euro-Par’00), Munich, Germany, volume 1900 of Lecture Notes in Computer Science, pages 620–624. Springer-Verlag, Berlin, Germany, 2000.Google Scholar
  10. 10.
    R.K.W. Hui. Rank and Uniformity. In Proceedings of the International Conference on Array Processing Languages (APL’95), San Antonio, Texas, USA, APL Quote Quad, pages 83–90. ACM Press, 1995.Google Scholar
  11. 11.
    International Standards Organization. International Standard for Programming Language APL. ISO N8485, ISO, 1984.Google Scholar
  12. 12.
    International Standards Organization. Programming Language APL, Extended. ISO N93.03, ISO, 1993.Google Scholar
  13. 13.
    K.E. Iverson. Programming in J. Iverson Software Inc., Toronto, Canada, 1991.Google Scholar
  14. 14.
    M.A. Jenkins and J.I. Glagow. A Logical Basis for Nested Array Data Structures.Computer Languages Journal, 14(1):35–51, 1989.CrossRefGoogle Scholar
  15. 15.
    M.A. Jenkins and W.H. Jenkins. The Q’Nial Language and Reference Manual. Nial Systems Ltd., Ottawa, Canada, 1993.Google Scholar
  16. 16.
    J.R. McGraw, S.K. Skedzielewski, S.J. Allan, R.R. Oldehoeft, et al. Sisal: Streams and Iteration in a Single Assignment Language: Reference Manual Version 1.2. M 146, Lawrence Livermore National Laboratory, Livermore, California, USA, 1985.Google Scholar
  17. 17.
    R.R. Oldehoeft. Implementing Arrays in SISAL 2.0. In Proceedings of the 2nd SISAL Users Conference, San Diego, California, USA, pages 209–222. Lawrence Livermore National Laboratory, 1992.Google Scholar
  18. 18.
    S.-B. Scholz. With-loop-folding in SAC — Condensing Consecutive Array Operations. In Proc. 9th International Workshop on Implementation of Functional Languages (IFL’97), St. Andrews, Scotland, UK, selected papers, volume 1467 of LNCS, pages 72–92. Springer, 1998.Google Scholar
  19. 19.
    S.-B. Scholz. Single Assignment C — Efficient Support for High-Level Array Operations in a Functional Setting. Journal of Functional Programming, 2003. Accepted for publication.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2003

Authors and Affiliations

  • Clemens Grelck
    • 1
  • Sven-Bodo Scholz
    • 2
  1. 1.Institute of Software Technology and Programming LanguagesUniversity of LübeckGermany
  2. 2.Institute of Computer Science and Applied MathematicsUniversity of KielKiel

Personalised recommendations