Nepal — Nested Data Parallelism in Haskell

  • Manuel M. T. Chakravarty
  • Gabriele Keller
  • Roman Lechtchinsky
  • Wolf Pfannenstiel
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2150)


This paper discusses an extension of Haskell by support for nested data-parallel programming in the style of the special-purpose language Nesl. The extension consists of a parallel array type, array comprehensions, and primitive parallel array operations. This extension brings a hitherto unsupported style of parallel programming to Haskell. Moreover, nested data parallelism should receive wider attention when available in a standardised language like Haskell.


Parallel Array Tridiagonal System Execution Mechanism Array Comprehension High Performance Fortran 
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.


  1. 1.
    S. Aditya, Arvind, L. Augustsson, J.-W. Maessen, and R. S. Nikhil. Semantics of pH: A parallel dialect of Haskell. In P. Hudak, editor, Proc. Haskell Workshop, La Jolla, CA USA, YALEU/DCS/RR-1075, pages 35–49, June 1995.Google Scholar
  2. 2.
    J. Barnes and P. Hut. A hierarchical O(n log n) force calculation algorithm. Nature, 324, December 1986.Google Scholar
  3. 3.
    G. E. Blelloch. Prefix sums and their applications. Technical Report CMU-CS-90-190, School of Computer Science, Carnegie Mellon University, Nov. 1990.Google Scholar
  4. 4.
    G. E. Blelloch. NESL: A nested data-parallel language. Technical Report CMU-CS-93-129, School of Computer Science, Carnegie Mellon University, 1993.Google Scholar
  5. 5.
    G. E. Blelloch. Programming parallel algorithms. CACM, 39(3):85–97, 1996.Google Scholar
  6. 6.
    G. E. Blelloch and G. W. Sabot. Compiling collection-oriented languages onto massively parallel computers. Journ. o. Par. and Distr. Comp., 8:119–134, 1990.CrossRefGoogle Scholar
  7. 7.
    S. Breitinger, U. Klusik, and R. Loogen. From (sequential) Haskell to (parallel) Eden: An implementation point of view. LNCS, 1490:318–328, 1998.Google Scholar
  8. 8.
    D. Cann. Retire fortran? A debate rekindled. CACM, 35(8):81, Aug. 1992.Google Scholar
  9. 9.
    M. M. T. Chakravarty and G. Keller. How portable is nested data parallelism? In 6th Australasian Conf. on Par. a. Real-Time Sys., pages 284–299. Springer, 1999.Google Scholar
  10. 10.
    M. M. T. Chakravarty and G. Keller. More types for nested data parallel programming. In P. Wadler, editor, ACM SIGPLAN Conference on Functional Programming (ICFP’ 00), pages 94–105. ACM Press, 2000.Google Scholar
  11. 11.
    N. Ellmenreich, C. Lengauer, and M. Griebl. Application of the polytope model to functional programs. In J. Ferrante, editor, Languages and Compilers for Parallel Computing. Computer Science and Engineering Department, UC San Diego, 1999.Google Scholar
  12. 12.
    C. Herrmann and C. Lengauer. Parallelization of divide-and-conquer by translation to nested loops. Journ. o. Functional Programming, 9(3):279–310, May 1999.Google Scholar
  13. 13.
    High Performance Fortran Forum. High Performance Fortran language specification. Technical report, Rice University, 1993. Version 1.0.Google Scholar
  14. 14.
    J. M. D. Hill. Data-parallel lazy functional programming. PhD thesis, Department of Computer Science, Queen Mary and Westfield College, London, 1994.Google Scholar
  15. 15.
    G. Keller. Transformation-based Implementation of Nested Data Parallelism for Distributed Memory Machines. PhD thesis, Technische Universität Berlin, 1999.Google Scholar
  16. 16.
    G. Keller and M. M. T. Chakravarty. Flattening trees. In D. Pritchard and J. Reeve, editors, Euro-Par’98, number 1470 in LNCS, pages 709–719. Springer, 1998.Google Scholar
  17. 17.
    G. Keller and M. M. T. Chakravarty. On the distributed implementation of aggregate data structures by program transformation. In J. Rolim et al., editors, Parallel and Distributed Processing, HIPS Workshop, number 1586 in LNCS, pages 108–122. Springer, 1999.CrossRefGoogle Scholar
  18. 18.
    Haskell 98: A non-strict, purely functional language., February 1999.
  19. 19.
    J. Prins and D. Palmer. Transforming high-level data-parallel programs into vector operations. In Proceedings of the Fourth ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, pages 119–128. ACM, 1993.Google Scholar
  20. 20.
    P. W. Trinder, K. Hammond, H.-W. Loidl, and S. L. Peyton Jones. Algorithm + strategy = parallelism. Journal of Functional Programming, 1998.Google Scholar
  21. 21.
    H. H. Wang. A parallel method for tridiagonal equations. ACM Transactions on Mathematical Software, 7(2):170–183, June 1981.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2001

Authors and Affiliations

  • Manuel M. T. Chakravarty
    • 1
  • Gabriele Keller
    • 2
  • Roman Lechtchinsky
    • 3
  • Wolf Pfannenstiel
    • 4
  1. 1.University of New South WalesAustralia
  2. 2.University of TechnologySydney
  3. 3.Technische Universität BerlinGermany
  4. 4.IT Service Omikron GmbHBerlin

Personalised recommendations