Abstract
Although many data-parallel functional languages exist, *Lisp [22], NESL have investigated incorporating data-parallelism with a lazy language. This paper describes data-parallel extensions which have been incorporated into the lazy functional lan guage Haskell. We describe PODS, parallel data structures that share many of the characteristics of Haskell arrays-their distinguishing feature however is they are unbounded. We present POD comprehensions . a framework within which communication and parallel operations on PODs can be expressed. The semant ics of these extensions is given in terms of translation rules into a core set of primitive parallel operations. Particular attention is given to th e non-strict nature of these extensions. Development of the higher order parallel map, fold, and scan is presented , a trio of functions that is widely accepted as being fundamental to a data-parallel paradigm [21]. Ladner [12] classifies a problem as being susceptible to parallel scanning if it is of a fixed size and can be solved by a finit e state transducer. We show that by utilising lazy evaluation, Ladner ’s requirements can be relaxed such that t he lazy version of scan presented here has the potential to scan an infinite POD.
This work has been supported through a SERC case award in association with Cambridge Parallel Processing.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
G. E. Bleiloch. Scans as primitive parallel operations. IEEE Transactions on computers, 38(11):1526–1538, Nov. 1989.
G. E. Blelloch. NESL: A nested data-parallel language. Technical Report CMU-CS-93-129, Carnegie Mellon University, Apr. 1993.
K. Clarke and J. M. D. Hill. Parallel Haskell: The not-so parallel features in parallel. Technical Report 658, QMW CS, Dec. 1993. Available by FTP from ftp.dcs.qmw.ac.uk in /pub/cpc/jon_hill/pHiterative.ps.
J. Darlington. Program transformation and synthesis: present capabilities. Technical Report 77/43, Dept of Computing and Control, Imperial College, London, Sept. 1977.
K. Hammond and S. L. Peyton Jones. Profiling scheduling strategies on the GRIP parallel reducer. Technical report, Glasgow University, 1991.
J. M. D. Hill. Data Parallel Haskell: Mixing old and new glue. Technical Report 611, QMW CS, Dec. 1992. Available by FTP from ftp.dcs.qmw.ac.uk in /pub/cpc/jon_hill/dpGlue.ps.
J. M. D. Hill. Parallel lexical analysis and parsing on the AMT Distributed Array Processor. Parallel Computing, 18(6):699–714, July 1992.
J. M. D. Hill. Vectorizing a non-strict functional language for a data-parallel “Spineless (not so) Tagless G-Machine”. In Proc. of the 5 th international workshop on the implementation of functional languages, Nijmegen, Holland, Sept. 1993. Available by FTP from ftp.dcs.qmw.ac.uk in /pub/cpc/jon_hill/vectorizeNonStrict.ps.
P. Hudak, S. L. Peyton Jones, and P. Wadler (editors). Report on the Programming Language Haskell, A Non-strict Purely Functional Language (Version 1.2). ACM SIGPLAN Notices, Mar. 1992.
J. Hughes. Why functional programming matters. The Computer Journal, 32(2):98–107, 1989.
G. K. Jouret. Compiling functional languages for SIMD architectures. In Third IEEE Symposium on parallel and distributed processing, pages 79–86, 1991.
R. E. Ladner and M. J. Fischer. Parallel prefix computation. JACM, 27(4):831–838, Oct. 1980.
P. J. Landin. A correspondence between ALGOL 60 and Church’s lambda notation. Communications of the ACM, 8(2):89–101, Feb. 1965. Part 2 in CACM Vol 8(2) 1965, pages 158-165.
S. Merall and J. Padget. Collections and garbage collection. In International Workshop Memory Management, St.Malo, pages 473–489. Springer-Verlag, 1992.
J. T. O’Donnell. Data parallel implementation of extensible sparse functional arrays. In PARLE, 1993.
W. D. Partain. Normal order reduction using scan primitives. In S. L. Peyton Jones, G. Hutton, and C. Holst, editors, Functional Programming, Glasgow. Springer Verlag, Aug. 1990.
S. L. Peyton Jones. The Implementation of Functional Programming Languages. Prentice-Hall International, 1987.
S. L. Peyton Jones. Implementing lazy functional languages on stock hardware: the Spineless Tagless G-machine. Journal of Functional Programming, 1992.
S. L. Peyton Jones and P. Wadler. Imperative functional programming. In POPL, 1993.
G. Sabot. The Parallation Model: Architecture Independent SIMD Programming. MIT Press, 1988.
D. B. Skillicorn. The Bird-Meertens formalism as a parallel model. In Software for Parallel Computation, June 1992.
G. L. Steele Jr. and W. D. Hillis. Connection machine Lisp: Fine-grained parallel symbolic processing. In ACM Conference on Lisp and Functional Programming, pages 279–297, 1986.
J.-P. Talpin and P. Jouvelot. Compiling FX on the CM-2. In Workshop on static analysis, number 724 in LNCS, 1993.
D. Turner. The semantic elegance of applicative languages. In FPCA, 1981.
P. Wadler and R. J. M. Hughes. Projections for strictness analysis. In FPCA, 1987.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1994 British Computer Society
About this chapter
Cite this chapter
Hill, J.M.D. (1994). The aim is laziness in a data-parallel language. In: O’Donnell, J.T., Hammond, K. (eds) Functional Programming, Glasgow 1993. Workshops in Computing. Springer, London. https://doi.org/10.1007/978-1-4471-3236-3_7
Download citation
DOI: https://doi.org/10.1007/978-1-4471-3236-3_7
Publisher Name: Springer, London
Print ISBN: 978-3-540-19879-6
Online ISBN: 978-1-4471-3236-3
eBook Packages: Springer Book Archive