Manticore: a heterogeneous parallel language

The Manticore project is an effort to design and implement a new functional language for parallel programming. Unlike many earlier parallel languages, Manticore is a heterogeneous language that supports parallelism at multiple levels. Specifically, we combine CML-style explicit concurrency with NESL/Nepal-style data-parallelism. In this paper, we describe and motivate the design of the Manticore language. We also describe a flexible runtime model that supports multiple scheduling disciplines (e.g., for both fine-grain and course-grain parallelism) in a uniform framework. Work on a prototype implementation is ongoing and we give a status report.

[1]  Brian N. Bershad,et al.  Scheduler activations: effective kernel support for the user-level management of parallelism , 1991, TOCS.

[2]  John Regehr,et al.  Using hierarchical scheduling to support soft real-time applications in general-purpose operating systems , 2001 .

[3]  Erik D. Demaine Higher-Order Concurrency in PVM , 1997 .

[4]  Andrew W. Appel,et al.  Compiling with Continuations , 1991 .

[5]  Kurt Debattista,et al.  Wait-free cache-affinity thread scheduling , 2003, IEE Proc. Softw..

[6]  Robert Hieb,et al.  Engines From Continuations , 1989, Comput. Lang..

[7]  Kevin Hammond Parallel SML: A functional language and its implementation in Dactl , 1991 .

[8]  Guy E. Blelloch,et al.  Implementation of a portable nested data-parallel language , 1993, PPOPP '93.

[9]  Joe Armstrong,et al.  Concurrent programming in ERLANG , 1993 .

[10]  Simon L. Peyton Jones,et al.  Asynchronous exceptions in Haskell , 2001, PLDI '01.

[11]  Eric S. Roberts,et al.  WorkCrews: An abstraction for controlling parallelism , 2005, International Journal of Parallel Programming.

[12]  Manuel M. T. Chakravarty,et al.  Higher Order Flattening , 2006, International Conference on Computational Science.

[13]  John H. Reppy,et al.  Compiler support for lightweight concurrency , 2002 .

[14]  Manuel M. T. Chakravarty,et al.  Nepal - Nested Data Parallelism in Haskell , 2001, Euro-Par.

[15]  Jean-Luc Gaudiot,et al.  The Sisal model of functional programming and its implementation , 1997, Proceedings of IEEE International Symposium on Parallel Algorithms Architecture Synthesis.

[16]  Daniel P. Friedman,et al.  Engines build process abstractions , 1984, LFP '84.

[17]  Arvind,et al.  Implicit parallel programming in pH , 2001 .

[18]  John C. Reynolds,et al.  The discoveries of continuations , 1993, LISP Symb. Comput..

[19]  Andrew W. Appel,et al.  Iterated register coalescing , 1996, POPL '96.

[20]  David Clark Laboratory for Computer Science , 1995 .

[21]  Anne Rogers,et al.  Supporting dynamic data structures on distributed-memory machines , 1995, TOPL.

[22]  John H. Reppy,et al.  First-Class Synchronous Operations in Standard ML , 1989 .

[23]  Mitchell Wand,et al.  Continuation-Based Multiprocessing , 1980, High. Order Symb. Comput..

[24]  R. Kent Dybvig,et al.  Representing control in the presence of one-shot continuations , 1996, PLDI '96.

[25]  John H. Reppy,et al.  Concurrent programming in ML , 1999 .

[26]  Guy E. Blelloch,et al.  Implementation of a portable nested data-parallel language , 1993, PPOPP '93.

[27]  Marvin Theimer,et al.  Using threads in interactive systems: a case study , 1993, SOSP '93.

[28]  Guy E. Blelloch,et al.  A provable time and space efficient implementation of NESL , 1996, ICFP '96.

[29]  Xavier Leroy The objective caml system release 3 , 2001 .

[30]  Sanjay Ghemawat,et al.  MapReduce: Simplified Data Processing on Large Clusters , 2004, OSDI.

[31]  John H. Reppy,et al.  Specialization of CML message-passing primitives , 2007, POPL '07.

[32]  John H. Reppy,et al.  CML: A higher concurrent language , 1991, PLDI '91.

[33]  Olin Shivers Continuations and threads: Expressing machine concurrency directly in advanced languages , 1997 .

[34]  Pekka Hedqvist A Parallel and Multithreaded ERLANG Implementation , 1998 .

[35]  Sape J. Mullender,et al.  Protium, an infrastructure for partitioned applications , 2001, Proceedings Eighth Workshop on Hot Topics in Operating Systems.

[36]  Mitchell Wand,et al.  Continuations and coroutines , 1984, LFP '84.

[37]  Nir Shavit,et al.  Software transactional memory , 1995, PODC '95.

[38]  Gilles Muller,et al.  A Framework for Simplifying the Development of Kernel Schedulers: Design and Performance Evaluation , 2005, HASE.

[39]  John H. Reppy,et al.  CML: A Higher-Order Concurrent Language , 1991, PLDI.

[40]  John H. Reppy,et al.  A Portable and Optimizing Back End for the SML/NJ Compiler , 1994, CC.

[41]  Anne Rogers,et al.  Supporting SPMD Execution for Dynamic Data Structures , 1992, LCPC.

[42]  Simon Peyton Jones,et al.  Featherweight concurrency in a portable assembly language , 2001 .

[43]  Paul Hudak,et al.  Implicit and Explicit Parallel Programming in Haskell , 1993 .

[44]  Robert D. Blumofe,et al.  Scheduling multithreaded computations by work stealing , 1994, Proceedings 35th Annual Symposium on Foundations of Computer Science.

[45]  Emden R. Gansner,et al.  A multi-threaded higher-order user interface toolkit , 1993 .

[46]  Claes Wikström,et al.  Concurrent programming in ERLANG (2nd ed.) , 1996 .

[47]  Yingqi Xiao TOWARD OPTIMIZATION OF CONCURRENT ML , 2005 .

[48]  Guy E. Blelloch,et al.  Programming parallel algorithms , 1996, CACM.

[49]  Robert H. Halstead,et al.  Lazy task creation: a technique for increasing the granularity of parallel programs , 1990, LISP and Functional Programming.

[50]  Robert Bruce Findler,et al.  Kill-safe synchronization abstractions , 2004, PLDI '04.

[51]  Manuel M. T. Chakravarty,et al.  More types for nested data parallel programming , 2000, ICFP '00.

[52]  Suresh Jagannathan,et al.  Stabilizers: a modular checkpointing abstraction for concurrent functional programs , 2006, ICFP '06.

[53]  George Russell,et al.  Events in Haskell, and how to implement them , 2001, ICFP '01.

[54]  Anne Rogers,et al.  Software Caching and Computation Migration in Olden , 1996, J. Parallel Distributed Comput..