skip to main content
10.1145/1248648.1248656acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
Article

Manticore: a heterogeneous parallel language

Published:16 January 2007Publication History

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.

References

  1. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. {App92} Appel, A. W. Compiling with Continuations. Cambridge University Press, Cambridge, England, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. {BL99} Blumofe, R. D. and C. E. Leiserson. Scheduling multithreaded computations by work stealing. JACM, 46(5), 1999, pp. 720--748. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. {Ble96} Blelloch, G. E. Programming parallel algorithms. CACM, 39(3), March 1996, pp. 85--97. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. {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 ScholarGoogle Scholar
  14. {DG04} Dean, J. and S. Ghemawat. MapReduce: Simplified data processing on large clusters. In OSDI '04, December 2004, pp. 137--150. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. {DH89} Dybvig, R. K. and R. Hieb. Engines from continuations. Comput. Lang., 14(2), 1989, pp. 109--123. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. {FF04} Flatt, M. and R. B. Findler. Kill-safe synchronization abstractions. In PLDI '04, June 2004. (to appear). Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. {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 ScholarGoogle Scholar
  18. {GA96} George, L. and A. Appel. Iterated register coalescing. ACM TOPLAS, 18(3), May 1996, pp. 300--324. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. {Ham91} Hammond, K. Parallel SML: a Functional Language and its Implementation in Dactl. The MIT Press, Cambridge, MA, 1991.Google ScholarGoogle Scholar
  23. {Hed98} Hedqvist, P. A parallel and multithreaded ERLANG implementation. Master's dissertation, Computer Science Department, Uppsala University, Uppsala, Sweden, June 1998.Google ScholarGoogle Scholar
  24. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  25. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. {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 ScholarGoogle Scholar
  28. {KD03} Kurt Debattista, Kevin Vella, J. C. Wait-free cache-affinity thread scheduling. IEEE Proceedings Software, 150(2), 2003, pp. 137--146.Google ScholarGoogle ScholarCross RefCross Ref
  29. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  30. {Ler00} Leroy, X. The Objective Caml System (release 3.00), April 2000. Available from http://caml.inria.fr.Google ScholarGoogle Scholar
  31. {MJMR01} Marlow, S., S. P. Jones, A. Moran, and J. Reppy. Asynchronous exceptions in Haskell. In PLDI '01, June 2001, pp. 274--285. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  34. {NA01} Nikhil, R. S. and Arvind. Implicit Parallel Programming in pH. Morgan Kaufmann Publishers, San Francisco, CA, 2001.Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. {Nik91} Nikhil, R. S. ID Language Reference Manual. Laboratory for Computer Science, MIT, Cambridge, MA, July 1991.Google ScholarGoogle Scholar
  36. {Rai07} Rainey, M. The Manticore runtime model. Master's dissertation, University of Chicago, January 2007. Available from http://manticore.cs.uchicago.edu.Google ScholarGoogle Scholar
  37. {Ree83} Reeves, W. T. Particle systems --- a technique for modeling a class of fuzzy objects. ACM TOG, 2(2), 1983, pp. 91--108. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  39. {Rep89} Reppy, J. H. First-class synchronous operations in Standard ML. Technical Report TR 89--1068, Dept. of CS, Cornell University, December 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. {Rep91} Reppy, J. H. CML: A higher-order concurrent language. In PLDI '91, June 1991, pp. 293--305. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. {Rep99} Reppy, J. H. Concurrent Programming in ML. Cambridge University Press, Cambridge, England, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. {Rey93} Reynolds, J. C. The discoveries of continuations. LASC, 6(3--4), 1993, pp. 233--248. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. {Ros} Rossberg, A. HaMLet. Available from http://www.ps.uni-sb.de/hamlet.Google ScholarGoogle Scholar
  44. {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 ScholarGoogle Scholar
  45. {Rus01} Russell, G. Events in Haskell, and how to implement them. In ICFP '01, September 2001, pp. 157--168. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. {RX07} Reppy, J. and Y. Xiao. Specialization of CML message-passing primitives. In POPL '07, January 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. {Shi97} Shivers, O. Continuations and threads: Expressing machine concurrency directly in advanced languages. In CW '97, January 1997.Google ScholarGoogle Scholar
  48. {ST95} Shavit, N. and D. Touitou. Software transactional memory. In PODC '95, New York, NY, 1995. ACM, pp. 204--213. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. {VR88} Vandevoorde, M. T. and E. S. Roberts. Workcrews: an abstraction for controlling parallelism. IJPP, 17(4), August 1988, pp. 347--366. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. {Wan80} Wand, M. Continuation-based multiprocessing. In LISP'80, August 1980, pp. 19--28. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. {Xia05} Xiao, Y. Toward optimization of Concurrent ML. Master's dissertation, University of Chicago, December 2005.Google ScholarGoogle Scholar
  52. {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 ScholarGoogle ScholarCross RefCross Ref
  53. {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 ScholarGoogle ScholarDigital LibraryDigital Library
  1. Manticore: a heterogeneous parallel language

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in
        • Published in

          cover image ACM Conferences
          DAMP '07: Proceedings of the 2007 workshop on Declarative aspects of multicore programming
          January 2007
          49 pages
          ISBN:9781595936905
          DOI:10.1145/1248648

          Copyright © 2007 ACM

          Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 16 January 2007

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • Article

          Upcoming Conference

          POPL '25

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader