Abstract
Sac (Single Assignment C) is a strict, purely functional programming language primarily designed with numerical applications in mind. Particular emphasis is on efficient support for arrays both in terms of language expressiveness and in terms of runtime performance. Array operations in Sac are based on elementwise specifications using so-called With-loops. These language constructs are also well-suited for concurrent execution on multiprocessor systems.
This paper outlines an implicit approach to compile Sac programs for multi-threaded execution on shared memory architectures. Besides the basic compilation scheme, a brief overview of the runtime system is given. Finally, preliminary performance figures demonstrate that this approach is well-suited to achieve almost linear speedups.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
J.C. Adams, W.S. Brainerd, J.T. Martin, et al. Fortran90 Handbook-Complete ANSI/ISO Reference. McGraw-Hill, 1992. ISBN 0-07-000406-4.
G.M. Amdahl. Validity of the Single Processor Approach to Achieving Large-Scale Computing Capabilities. In AFIPS Conf. Proc., pages 483–485. AFIPS Press, Reston, Va, 1967.
Arvind, K.P. Gostelow, and W. Plouffe. The ID-Report: An Asynchronous Programming Language and Computing Machine. Technical Report 114, University of California at Irvine, 1978.
C. Aßmann. Coordinating Functional Processes Using Petri Nets. In W. Kluge, editor, Proc. 8th. International Workshop on the Implementation of Functional Languages, Bad Godesberg, Germany, September 1996, volume 1268 of LNCS, pages 162–183. Springer-Verlag, 1997.
D. Bailey, E. Barszcz, J. Barton, et al. The NAS Parallel Benchmarks. RNR 94-007, NASA Ames Research Center, 1994.
G.E. Blelloch. NESL: A Nested Data-Parallel Language (Version 3.1). Technical Report CMU-CS-95-170, Carnegie Mellon University, Pittsburgh, PA, 1995.
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, 1994.
D. Braess. Finite Elemente. Springer-Verlag, 1996. ISBN 3-540-61905-4.
S. Breitinger, R. Loogen, and Y. Ortega-Mallen. Towards a Declarative Language for Parallel and Concurrent Programming. In Proc. 1995 Glasgow Workshop on Functional Programming. Springer-Verlag WiCS, 1995.
J.J. Dongarra, H.W. Meuer, and E. Strohmaier. TOP500 Supercomputer Sites, 11th edition. In Supercomputer’ 98 Conference, Mannheim, Germany, 1998.
M. Haines and W. Böhm. Task Management, Virtual Shared Memory, and Multithreading in a Distributed Memory Implementation of SISAL. In A. Bode, M. Reeve, and G. Wolf, editors, Proc. PARLE’ 93 — Parallel Architectures and Languages Europe, volume 694 of LNCS, pages 12–23, Eindhoven, The Netherlands, Spinger-Verlag, June 1991.
K. Hammond, H.-W. Loidl, S.L. Peyton Jones, and P. Trinder. Algorithm + Strategy = Parallelism. Journal of Functional Programming, 8(1), 1998.
J. Hicks, D. Chiou, B.S. Ang, and Arvind. Performance Studies of Id on the Monsoon Dataflow System. Journal of Parallel and Distributed Computing, 18(3):273–300, 1993.
J.M.D. Hill and D.B. Skillicorn. Practical Barrier Synchronisation. Technical Report TR-16-96, Programming Research Group, Oxford University Computing Laboratory, Oxford, England, 1996.
K.E. Iverson. A Programming Language. Wiley, New York, 1962.
S.L. Peyton Jones, A. Gordon, and S. Finne. Concurrent Haskell. In Proc. 23rd ACM Symposium on Principles of Programming Languages (POPL’96), St. Petersburg Beach, Florida, pages 295–308, 1996.
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, LLNL, Livermore California, 1985.
Institute of Electrical and Inc. Electronic Engineers. Information Technology-Portable Operating Systems Interface (POSIX)-Part: System Application Program Interface (API)-Amendment 2: Threads Extension [C Language]. IEEE Standard 1003.1c-1995, IEEE, New York, NY, 1995.
J.H. Reppy. CML: A higher-order concurrent language. In Proc. 1991 ACM SIGPLAN Conf. on Programming Language Design and Implementation (PLDI 91), pages 293–305, 1991.
S.B. Scholz. S ingle A ssignment C-Entwurf und Implementierung einer funktionalen C-Variante mit spezieller Unterstützung shape-invarianter Array-Operationen. PhD thesis, Institut für Informatik und Praktische Mathematik, Universität Kiel, 1996.
S.B. Scholz. On Programming Scientific Applications in SAC-A Functional Language Extended by a Subsystem for High-Level Array Operations. In W. Kluge, editor, Proc. 8th. International Workshop on the Implementation of Functional Languages, Bad Godesberg, Germany, September 1996, volume 1268 of LNCS, pages 85–104. Springer-Verlag, 1997.
S.B. Scholz. WITH-loop-folding: Condensing Consecutive Array Operations. In C. Clack, T. Davie, and K. Hammond, editors, Proc. 9th International Workshop on the Implementation of Functional Languages’ 97, St Andrews, Scotland, 1997, volume 1467 of LNCS, pages 72–91. Springer-Verlag, 1998.
S.B. Scholz. A Case Study: Effects of WITH-Loop Folding on the NAS Mgrid Benchmark in SAC. In This Proceedings.
S.B. Scholz. On Defining Application-Specific High-Level Array Operations by Means of Shape-Invariant Programming Facilities. In S. Picchi and M. Micocci, editors, Proc. 1998 Array Processing Language Conference, Rome, Italy, pages 40–45. ACM Press, 1998.
W. Schreiner. Parallel Functional Programming, An Annotated Bibliography (2nd edition). 93–124, Research Institute for Symbolic Computation (RISC), Johannes-Kepler-University, Linz, Austria, 1993.
P.R. Serrarens. Distributed arrays in Clean. In Euro-Par’ 97, LNCS. Springer, 1997.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1999 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Grelck, C. (1999). Shared Memory Multiprocessor Support for SAC. In: Hammond, K., Davie, T., Clack, C. (eds) Implementation of Functional Languages. IFL 1998. Lecture Notes in Computer Science, vol 1595. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-48515-5_3
Download citation
DOI: https://doi.org/10.1007/3-540-48515-5_3
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-66229-7
Online ISBN: 978-3-540-48515-5
eBook Packages: Springer Book Archive