ABSTRACT
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.
- {ABLL92} Anderson, T. E., B. N. Bershad, E. D. Lazowska, and H. M. Levy. Scheduler activations: Effective kernel support for the user-level management of parallelism. ACM TOCS, 10(1), February 1992, pp. 53--79. Google ScholarDigital Library
- {App92} Appel, A. W. Compiling with Continuations. Cambridge University Press, Cambridge, England, 1992. Google ScholarDigital Library
- {AVWW96} Armstrong, J., R. Virding, C. Wikström, and M. Williams. Concurrent programming in ERLANG (2nd ed.). Prentice Hall International (UK) Ltd., Hertfordshire, UK, UK, 1996. Google ScholarDigital Library
- {BCH+94} Blelloch, G. E., S. Chatterjee, J. C. Hardwick, J. Sipelstein, and M. Zagha. Implementation of a portable nested data-parallel language. JPDC, 21(1), 1994, p. 4=14. Google ScholarDigital Library
- {BG96} Blelloch, G. E. and J. Greiner. A provable time and space efficient implementation of NESL. In ICFP '96, New York, NY, May 1996. ACM, pp. 213--225. Google ScholarDigital Library
- {BL99} Blumofe, R. D. and C. E. Leiserson. Scheduling multithreaded computations by work stealing. JACM, 46(5), 1999, pp. 720--748. Google ScholarDigital Library
- {Ble96} Blelloch, G. E. Programming parallel algorithms. CACM, 39(3), March 1996, pp. 85--97. Google ScholarDigital Library
- {BWD96} Bruggeman, C., O. Waddell, and R. K. Dybvig. Representing control in the presence of one-shot continuations. In PLDI '96, New York, NY, May 1996. ACM, pp. 99--107. Google ScholarDigital Library
- {CHRR95} Carlisle, M., L. J. Hendren, A. Rogers, and J. Reppy. Supporting SPMD execution for dynamic data structures. ACM TOPLAS, 17(2), March 1995, pp. 233--263. Google ScholarDigital Library
- {CK00} Chakravarty, M. M. T. and G. Keller. More types for nested data parallel programming. In ICFP '00, New York, NY, September 2000. ACM, pp. 94--105. Google ScholarDigital Library
- {CKLP01} Chakravarty, M. M. T., G. Keller, R. Leshchinskiy, and W. Pfannenstiel. Nepal --- Nested Data Parallelism in Haskell. In Euro-Par '01, vol. 2150 of LNCS, New York, NY, August 2001. Springer-Verlag, pp. 524--534. Google ScholarDigital Library
- {CR95} Carlisle, M. C. and A. Rogers. Software caching and computation migration in Olden. In PPoPP '95, New York, NY, July 1995. ACM, pp. 29--38. Google ScholarDigital Library
- {Dem97} Demaine, E. D. Higher-order concurrency in Java. In WoTUG20, April 1997, pp. 34--47. Available from http://theory.csail.mit.edu/~edemaine/papers/WoTUG20/.Google Scholar
- {DG04} Dean, J. and S. Ghemawat. MapReduce: Simplified data processing on large clusters. In OSDI '04, December 2004, pp. 137--150. Google ScholarDigital Library
- {DH89} Dybvig, R. K. and R. Hieb. Engines from continuations. Comput. Lang., 14(2), 1989, pp. 109--123. Google ScholarDigital Library
- {FF04} Flatt, M. and R. B. Findler. Kill-safe synchronization abstractions. In PLDI '04, June 2004. (to appear). Google ScholarDigital Library
- {FR02} Fisher, K. and J. Reppy. Compiler support for lightweight concurrency. Technical memorandum, Bell Labs, March 2002. Available from http://moby.cs.uchicago.edu/.Google Scholar
- {GA96} George, L. and A. Appel. Iterated register coalescing. ACM TOPLAS, 18(3), May 1996, pp. 300--324. Google ScholarDigital Library
- {GDF+97} Gaudiot, J.-L., T. DeBoni, J. Feo, W. Bohm, W. Najjar, and P. Miller. The Sisal model of functional programming and its implementation. In pAs '97, Los Alamitos, CA, March 1997. IEEE Computer Society Press, pp. 112--123. Google ScholarDigital Library
- {GGR94} George, L., F. Guillame, and J. Reppy. A portable and optimizing back end for the SML/NJ compiler. In CC'94, April 1994, pp. 83--97. Google ScholarDigital Library
- {GR93} Gansner, E. R. and J. H. Reppy. A Multi-threaded Higher-order User Interface Toolkit, vol. 1 of Software Trends, pp. 61--80. John Wiley & Sons, 1993. Google ScholarDigital Library
- {Ham91} Hammond, K. Parallel SML: a Functional Language and its Implementation in Dactl. The MIT Press, Cambridge, MA, 1991.Google Scholar
- {Hed98} Hedqvist, P. A parallel and multithreaded ERLANG implementation. Master's dissertation, Computer Science Department, Uppsala University, Uppsala, Sweden, June 1998.Google Scholar
- {HF84} Haynes, C. T. and D. P. Friedman. Engines build process abstractions. In LFP'84, New York, NY, August 1984. ACM, pp. 18--24. Google ScholarDigital Library
- {HFW84} Haynes, C. T., D. P. Friedman, and M. Wand. Continuations and coroutines. In LFP'84, New York, NY, August 1984. ACM, pp. 293--298. Google ScholarDigital Library
- {HJT+93} Hauser, C., C. Jacobi, M. Theimer, B. Welch, and M. Weiser. Using threads in interactive systems: A case study. In SOSP '93, December 1993, pp. 94--105. Google ScholarDigital Library
- {JH93} Jones, M. P. and P. Hudak. Implicit and explicit parallel programming in Haskell. Technical Report Research Report YALEU/DCS/RR-982, Yale University, August 1993.Google Scholar
- {KD03} Kurt Debattista, Kevin Vella, J. C. Wait-free cache-affinity thread scheduling. IEEE Proceedings Software, 150(2), 2003, pp. 137--146.Google ScholarCross Ref
- {LCK06} Leshchinskiy, R., M. M. T. Chakravarty, and G. Keller. Higher order flattening. In V. Alexandrov, D. van Albada, P. Sloot, and J. Dongarra (eds.), ICCS '06, number 3992 in LNCS, New York, NY, May 2006. Springer-Verlag, pp. 920--928. Google ScholarDigital Library
- {Ler00} Leroy, X. The Objective Caml System (release 3.00), April 2000. Available from http://caml.inria.fr.Google Scholar
- {MJMR01} Marlow, S., S. P. Jones, A. Moran, and J. Reppy. Asynchronous exceptions in Haskell. In PLDI '01, June 2001, pp. 274--285. Google ScholarDigital Library
- {MKH90} Mohr, E., D. A. Kranz, and R. H. Halstead Jr. Lazy task creation: a technique for increasing the granularity of parallel programs. In LFP'90, New York, NY, June 1990. ACM, pp. 185--197. Google ScholarDigital Library
- {MLD05} Muller, G., J. L. Lawall, and H. Duchesne. A framework for simplifying the development of kernel schedulers: Design and performance evaluation. In HASE '05, October 2005, pp. 56--65. Google ScholarDigital Library
- {NA01} Nikhil, R. S. and Arvind. Implicit Parallel Programming in pH. Morgan Kaufmann Publishers, San Francisco, CA, 2001.Google ScholarDigital Library
- {Nik91} Nikhil, R. S. ID Language Reference Manual. Laboratory for Computer Science, MIT, Cambridge, MA, July 1991.Google Scholar
- {Rai07} Rainey, M. The Manticore runtime model. Master's dissertation, University of Chicago, January 2007. Available from http://manticore.cs.uchicago.edu.Google Scholar
- {Ree83} Reeves, W. T. Particle systems --- a technique for modeling a class of fuzzy objects. ACM TOG, 2(2), 1983, pp. 91--108. Google ScholarDigital Library
- {Reg01} Regehr, J. Using Hierarchical Scheduling to Support Soft Real-Time Applications on General-Purpose Operating Systems. Ph.D. dissertation, University of Virginia, 2001. Google ScholarDigital Library
- {Rep89} Reppy, J. H. First-class synchronous operations in Standard ML. Technical Report TR 89--1068, Dept. of CS, Cornell University, December 1989. Google ScholarDigital Library
- {Rep91} Reppy, J. H. CML: A higher-order concurrent language. In PLDI '91, June 1991, pp. 293--305. Google ScholarDigital Library
- {Rep99} Reppy, J. H. Concurrent Programming in ML. Cambridge University Press, Cambridge, England, 1999. Google ScholarDigital Library
- {Rey93} Reynolds, J. C. The discoveries of continuations. LASC, 6(3--4), 1993, pp. 233--248. Google ScholarDigital Library
- {Ros} Rossberg, A. HaMLet. Available from http://www.ps.uni-sb.de/hamlet.Google Scholar
- {RP00} Ramsey, N. and S. Peyton Jones. Featherweight concurrency in a portable assembly language. Unpublished paper available at http://www.cminusminus.org/abstracts/c-con.html, November 2000.Google Scholar
- {Rus01} Russell, G. Events in Haskell, and how to implement them. In ICFP '01, September 2001, pp. 157--168. Google ScholarDigital Library
- {RX07} Reppy, J. and Y. Xiao. Specialization of CML message-passing primitives. In POPL '07, January 2007. Google ScholarDigital Library
- {Shi97} Shivers, O. Continuations and threads: Expressing machine concurrency directly in advanced languages. In CW '97, January 1997.Google Scholar
- {ST95} Shavit, N. and D. Touitou. Software transactional memory. In PODC '95, New York, NY, 1995. ACM, pp. 204--213. Google ScholarDigital Library
- {VR88} Vandevoorde, M. T. and E. S. Roberts. Workcrews: an abstraction for controlling parallelism. IJPP, 17(4), August 1988, pp. 347--366. Google ScholarDigital Library
- {Wan80} Wand, M. Continuation-based multiprocessing. In LISP'80, August 1980, pp. 19--28. Google ScholarDigital Library
- {Xia05} Xiao, Y. Toward optimization of Concurrent ML. Master's dissertation, University of Chicago, December 2005.Google Scholar
- {YYS+01} Young, C., L. YN, T. Szymanski, J. Reppy, R. Pike, G. Narlikar, S. Mullender, and E. Grosse. Protium, an infrastructure for partitioned applications. In HotOS-X, January 2001, pp. 41--46.Google ScholarCross Ref
- {ZSJ06} Ziarek, L., P. Schatz, and S. Jagannathan. Stabilizers: a modular checkpointing abstraction for concurrent functional programs. In ICFP '06, New York, NY, September 2006. ACM, pp. 136--147. Google ScholarDigital Library
- Manticore: a heterogeneous parallel language
Recommendations
Implicitly-threaded parallelism in Manticore
ICFP '08: Proceedings of the 13th ACM SIGPLAN international conference on Functional programmingThe increasing availability of commodity multicore processors is making parallel computing available to the masses. Traditional parallel languages are largely intended for large-scale scientific computing and tend not to be well-suited to programming ...
Implicitly-threaded parallelism in Manticore
ICFP '08The increasing availability of commodity multicore processors is making parallel computing available to the masses. Traditional parallel languages are largely intended for large-scale scientific computing and tend not to be well-suited to programming ...
The manticore project
FHPC '13: Proceedings of the 2nd ACM SIGPLAN workshop on Functional high-performance computingThe Manticore project is a research effort to design and implement a parallel functional programming language that targets commodity multicore and shared-memory multiprocessors. Our language is a dialect of Standard ML, called Parallel ML (PML), that ...
Comments