Using multicasting for optimising data-parallelism

  • Pascal R. Serrarens
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1467)


Multicasting, where a message is sent from one processor to number of other processors, can optimise the communication for data-parallel functional computing. This paper introduces two multicast primitives in the functional language Concurrent Clean. A new implementation of distributed arrays using these primitives is described, which shows a speedup compared to a version without multicasting. The new implementation also pointed out that the implicit communication mechanism as it is currently implemented copies too much data in some cases.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    E. Barendsen and J.E.W. Smetsers. Conventional and uniqueness typing in graph rewrite systems. In R.K. Shyamasundar, editor, Proceedings of Foundations of Software Technology and Theoretical Computer Science, volume 761 of LNCS, pages 41–51. Springer-Verlag, 1993. extented abstract.Google Scholar
  2. [2]
    M. Cole. Algorithmic Skeletons: Structured Management of Parallel Computation. MIT Press, 1989.Google Scholar
  3. [3]
    J. Darlington, Y. Guo, H.W. To, and J. Yang. Skeletons for structured parallel composition. In Proceedings of the 15th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, 1995.Google Scholar
  4. [4]
    A. Geist, A. Beguelin, J. Dongarra, W. Jiang, R. Menchek, and V. Sunderam. PVM: parallel Virtual Machine. A Users' Guide and Tutorial for Networked Parallel Computing. MIT press, 1994.Google Scholar
  5. [5]
    M. Gupta et al. An hpf compiler for the ibm sp2. Proceedings of the 1995 ACM/IEEE Supercomputing Conference, 1995.Google Scholar
  6. [6]
    High Performance Fortran Forum. High Performance Fortran Language Specification, version 1.0. Houston Texas, May 1993.Google Scholar
  7. [7]
    P. Hudak, S.L. Peyton Jones, and P. Wadler. Report on the programming language Haskell, a non-strict purely functional language (version 1.2). SIGPLAN Notices, Mar, 1992.Google Scholar
  8. [8]
    K.E. Iverson. A Programming Language. Wiley, New York, 1962.Google Scholar
  9. [9]
    M.H.G. Kesseler. Constructing skeletons in Clean — the bare bones. In Proceedings of High Performance Functional Computing, pages 182–192, Denver, Colorado, 1995. CONF-9504126.Google Scholar
  10. [10]
    Werner Kluge, editor. Implementation of Functional Languages, 8th International Workshop, Selected Papers, volume 1268 of LNCS, 1997.Google Scholar
  11. [11]
    H. Kuchen and G. Geiler. Distributed applicative arrays. Technical Report AIB 91-5, RWTH Aachen, 1991.Google Scholar
  12. [12]
    V. Kumar, A. Grama, A. Gupta, and G. Karypis. Introduction to Parallel Computing, Design and Analysis of Algorithms. The Benjamin/Cummings Publishing Company, Inc., California, 1994.Google Scholar
  13. [13]
    H.-W. Loidl and K. Hammond. Making a packet: cost-effective communication for a parallel graph reducer. In Kluge [10], pages 184–199.Google Scholar
  14. [14]
    Message Passing Interface Forum. MPI: a Message Passing Interface Standard, May 1994.Google Scholar
  15. [15]
    M.J. Plasmeijer and M.C.J.D. van Eekelen. Functional Programming and Parallel Graph Rewriting. Addison-Wesley Publishers Ltd., 1993.Google Scholar
  16. [16]
    S.-B. Scholz. On programming scientific applications in SAC — a functional language extended by a subsystem for high-level array operations. In Kluge [10], pages 85–104.Google Scholar
  17. [17]
    P.R. Serrarens. Distributed arrays in the functional language Concurrent Clean. In Proceedings of the 3rd international Euro-Par conference, volume 1300 of LNCS, pages 1201–1208, Passau, Germany, August 1997.Google Scholar
  18. [18]
    P.R. Serrarens. Implementing the conjugate gradient algorithm in a functional language. In Kluge [10], pages 125–140.Google Scholar
  19. [19]
    P.W. Trinder, K. Hammond, H.-W. Loidl, and S.L. Peyton Jones. Algorithm + strategy = parallelism. Journal of Functional Programming, 8(1), Jan 1998. to appear.Google Scholar
  20. [20]
    J.H.G. van Groningen. The implementation and efficiency of arrays in Clean 1.1. In Kluge [10], pages 105–124.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1998

Authors and Affiliations

  • Pascal R. Serrarens
    • 1
  1. 1.Computer Science InstituteUniversity of NijmegenThe Netherlands

Personalised recommendations