Abstract
This paper introduces HaskSkel: an implementation of algorithmic skeletons for the non-strict functional language Haskell. The implementation is based on the evaluation strategy mechanism for Glasgow Parallel Haskell (GpH), and has been tested in both simulated and real parallel settings. Compared with most skeleton libraries, HaskSkel has a number of novel and interesting features: (strict) skeletons have been embedded in a non-strict language; the cost models and implementation modules are written entirely using standard Haskell (and may therefore be modified or extended by the user rather than being a fixed part of the compiler); it is possible to nest skeletons (though we have not yet defined nested cost models to support this); and the library is not restricted to a single bulk data type. Finally, in contrast with most other skeletal approaches, it is possible to freely mix HaskSkel skeletons with other parallel constructs that have been introduced using standard evaluation strategies.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Botorog, G.H., Kuchen, H.: Efficient Parallel Programming with Algorithmic Skeletons. In: Fraigniaud, P., Mignotte, A., Bougé, L., Robert, Y. (eds.) Euro-Par 1996. LNCS, vol. 1123, pp. 718–731. Springer, Heidelberg (1996)
Botorog, G.H., Kuchen, H.: Using Algorithmic Skeletons with Dynamic Data Structures. In: Saad, Y., Yang, T., Ferreira, A., Rolim, J.D.P. (eds.) IRREGULAR 1996. LNCS, vol. 1117. Springer, Heidelberg (1996)
Bratvold, T.A.: A Skeleton-Based Parallelising Compiler for ML. In: Proc. IFL 1993 — 5th International Workshop on the Implementation of Functional Languages, Nijmegen, The Netherlands, pp. 23–33 (1993)
Cole, M.I.: Algorithmic Skeletons: Structured Management of Parallel Computation. In: Research Monographs in Parallel and Distributed Computing. The MIT Press, Cambridge (1989)
Cole, M.I.: Algorithmic Skeletons. In: Hammond, K., Michaelson, G. (eds.) Research Directions in Parallel Functional Programming, ch. 13, pp. 289–303 (September 1999)
Danelutto, M., Cosmo, R.D., Leroy, X., Pelagatti, S.: Parallel Functional Programming with Skeletons: the OcamlP3l Experiment. In: Proc. 1998 ACM Sigplan Workshop on ML, pp. 31–39 (September 1998)
Darlington, J., Field, A.J., Harrison, P.G., Kelly, P.H.J., Sharp, D.W.N., Wu, Q., While, R.L.: Parallel Programming Using Skeleton Functions. In: Reeve, M., Bode, A., Wolf, G. (eds.) PARLE 1993. LNCS, vol. 694, pp. 146–160. Springer, Heidelberg (1993)
Hall, C.V., Hammond, K., Jones, S.L.P., Wadler, P.: Type Classes in Haskell. In: Sannella, D. (ed.) ESOP 1994. LNCS, vol. 788, pp. 241–256. Springer, Heidelberg (1994)
Hamdan, M., Michaelson, G.: A Framework for Nesting Algorithmic Skeletons. In: Proc. ParCo 1999 — Conference on Parallelism (1999)
Hammond, K., Loidl, H.-W., Partridge, A.: Visualising Granularity in Parallel Programs: A Graphical Winnowing System for Haskell. In: Proc. HPFC 1995 — Conference on High Performance Functional Computing, Denver, CO, pp. 208–221 (April 1995)
Herrmann, C., Lengauer, C., Günz, R., Laitenberger, J., Schaller, C.: A Compiler for HDC. Technical Report MIP-9907, Fakultät für Mathematik und Informatik, Universität Passau (May 1999)
Kesseler, M.: Constructing Skeletons in Clean –The Bare Bones. In: Proc. PASCO 1994 -— Symposium on Parallel Symbolic Computation, Linz, Austria, pp. 182–192 (1994)
Loidl, H.-W., Morgan, R., Trinder, P.W., Poria, S., Cooper, C., Jones, S.L.P., Garigliano, R.: Parallelising a Large Functional Program Or: Keeping LOLITA Busy. In: Clack, C., Hammond, K., Davie, T. (eds.) IFL 1997. LNCS, vol. 1467, pp. 198–213. Springer, Heidelberg (1998)
Loidl, H.-W., Trinder, P.W.: Engineering Large Parallel Functional Programs. In: Clack, C., Hammond, K., Davie, T. (eds.) IFL 1997. LNCS, vol. 1467, pp. 178–197. Springer, Heidelberg (1998)
MIT Laboratory for Computer Science. Impala – (IMplicitly PArallel LAnguage Application Suite), http://www.csg.lcs.mit.edu/impala/
Nicklisch, J., Jones, S.L.P.: An Exploration of Modular Programs. In: Proc. 1996 Glasgow Workshop on Functional Programming (October 1996)
Okasaki, C.: Edison User’s Guide. Department of Computer Science, Columbia University (May 1999), Online Document http://www.columbia.edu/~cdo/edison/
Pelagatti, S.: Structured Development of Parallel Programs. Taylor and Francis, London (1998)
Jones, S.L.P.: Bulk Types with Class. In: Proc. 1996 Glasgow Workshop on Functional Programming (October 1996)
Jones, S.L.P., Hughes, J., Augustsson, L., Barton, D., Boutel, B., Burton, W., Fasel, J., Hammond, K., Hinze, R., Hudak, P., Johnsson, T., Jones, M., Launchbury, J., Meijer, E., Peterson, J., Reid, A., Runciman, C., Wadler, P.: Haskell 98: A Nonstrict, Purely Functional Language (February 1999), Electronic document available on-line at http://www.haskell.org/
Jones, S.L.P., Jones, M., Meijer, E.: Type Classes: an Exploration of the Design Space. In: Proc. 1997 Haskell Workshop (May 1997)
Sipelstein, J., Blelloch, G.E.: Collection Oriented Languages. Proceedings of the IEEE 79(4) (April 1991)
Skillicorn, D.B.: Cost Modelling. In: Hammond, K., Michaelson, G. (eds.) Research Directions in Parallel Functional Programming, ch. 8, pp. 207–218 (September 1999)
Taylor, F.S.: Parallel Functional Programming by Partitioning. PhD thesis, University of London (September 1996)
Trinder, P.W., Hammond, K., Loidl, H.-W., Jones, S.L.P.: Algorithm + Strategy = Parallelism. Journal of Functional Programming 8(1), 23–60 (1998)
Trinder, P.W., Hammond, K., Mattson Jr., J.S., Partridge, A.S., Peyton Jones, S.L.: GUM: A Portable Parallel Implementation of Haskell. In: Proc. PLDI 1996 — 1996 ACM Conf. on Programming Language Design and Implementation, Philadelphia, PA, pp. 78–88 (May 1996)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2000 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Hammond, K., Rebón Portillo, Á.J. (2000). HaskSkel: Algorithmic Skeletons in Haskell. In: Koopman, P., Clack, C. (eds) Implementation of Functional Languages. IFL 1999. Lecture Notes in Computer Science, vol 1868. Springer, Berlin, Heidelberg. https://doi.org/10.1007/10722298_11
Download citation
DOI: https://doi.org/10.1007/10722298_11
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-67864-9
Online ISBN: 978-3-540-44658-3
eBook Packages: Springer Book Archive