skip to main content
research-article

Implicitly-threaded parallelism in Manticore

Published:20 September 2008Publication History
Skip Abstract Section

Abstract

The 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 applications one typically finds on a desktop system. Thus we need new parallel-language designs that address a broader spectrum of applications. In this paper, we present Manticore, a language for building parallel applications on commodity multicore hardware including a diverse collection of parallel constructs for different granularities of work. We focus on the implicitly-threaded parallel constructs in our high-level functional language. We concentrate on those elements that distinguish our design from related ones, namely, a novel parallel binding form, a nondeterministic parallel case form, and exceptions in the presence of data parallelism. These features differentiate the present work from related work on functional data parallel language designs, which has focused largely on parallel problems with regular structure and the compiler transformations --- most notably, flattening --- that make such designs feasible. We describe our implementation strategies and present some detailed examples utilizing various mechanisms of our language.

Skip Supplemental Material Section

Supplemental Material

Video

References

  1. Arvind, R. S. Nikhil, and K. K. Pingali. I-structures: Data structures for parallel computing. ACM TOPLAS, 11(4), October 1989, pp. 598--632. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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
  3. Boehm, H.-J., R. Atkinson, and M. Plass. Ropes: an alternative to strings. Software-Practice & Experience, 25(12), 1995, pp. 1315--1330. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Barton, R., D. Adkins, H. Prokop, M. Frigo, C. Joerg, M. Renard, D. Dailey, and C. Leiserson. Cilk Pousse, 1998. Viewed on March 20, 2008 at 2:45 PM.Google ScholarGoogle Scholar
  5. 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, pp. 4--14. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Buck, I., T. Foley, D. Horn, J. Sugerman, K. Fatahalian, M. Houston, and P. Hanrahan. Brook for GPUs: stream computing on graphics hardware. SIGGRAPH '04, 23(3), July 2004, pp. 777--786. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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
  8. Blumofe, R. D., C. F. Joerg, B. C. Kuszmaul, C. E. Leiserson, K. H. Randall, and Y. Zhou. Cilk: an efficient multithreaded runtime system. SIGPLAN Not., 30(8), 1995, pp. 207--216. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Blelloch, G. E. Programming parallel algorithms. CACM, 39(3), March 1996, pp. 85--97. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. 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. 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. Chakravarty, M. M. T., R. Leschchinski, S. Peyton Jones, G. Keller, and S. Marlow. Data Parallel Haskell: A status report. In DAMP '07, New York, NY, January 2007. ACM, pp. 10--18. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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
  14. Dailey, D. and C. E. Leiserson. Using Cilk to write multiprocessor chess programs. The Journal of the International Computer Chess Association, 2002.Google ScholarGoogle Scholar
  15. Fluet, M., N. Ford, M. Rainey, J. Reppy, A. Shaw, and Y. Xiao. Status report: The Manticore project. In ML '07, New York, NY, October 2007. ACM, pp. 15--24. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Fluet, M., M. Rainey, J. Reppy, A. Shaw, and Y. Xiao. Manticore: A heterogeneous parallel language. In DAMP '07, New York, NY, January 2007. ACM, pp. 37--44. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Fluet, M., M. Rainey, and J. Reppy. A scheduling framework for general-purpose parallel languages. In ICFP '08, New York, NY, September 2008. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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
  19. GHC. The Glasgow Haskell Compiler. Available from http://www.haskell.org/ghc.Google ScholarGoogle Scholar
  20. Gansner, E. R. and J. H. Reppy (eds.). The Standard ML Basis Library. Cambridge University Press, Cambridge, England, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Halstead Jr., R. H. Implementation of multilisp: Lisp on a multiprocessor. In LFP '84, New York, NY, August 1984. ACM, pp. 9--17. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Hammond, K. Parallel SML: a Functional Language and its Implementation in Dactl. The MIT Press, Cambridge, MA, 1991.Google ScholarGoogle Scholar
  23. Hedqvist, P. A parallel and multithreaded ERLANG implementation. Master's dissertation, Computer Science Department, Uppsala University, Uppsala, Sweden, June 1998.Google ScholarGoogle Scholar
  24. 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
  25. Harris, T., S. Marlow, S. Peyton Jones, and M. Herlihy. Composable memory transactions. In PPoPP '05, New York, NY, June 2005. ACM, pp. 48--60. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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
  27. 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
  28. Leroy, X. and F. Pessaux. Type-based analysis of uncaught exceptions. ACM Trans. Program. Lang. Syst., 22(2), 2000, pp. 340--377. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Luckham, D. Programming with Specifications. Texts and Monographs in Computer Science. Springer-Verlag, 1990.Google ScholarGoogle ScholarCross RefCross Ref
  30. Nikhil, R. S. and Arvind. Implicit Parallel Programming in pH. Morgan Kaufmann Publishers, San Francisco, CA, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Nikhil, R. S. ID Language Reference Manual. Laboratory for Computer Science, MIT, Cambridge, MA, July 1991.Google ScholarGoogle Scholar
  32. Parnas, D. L. A technique for software module specification with examples. CACM, 15(5), May 1972, pp. 330--336. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Pike, R., S. Dorward, R. Griesemer, and S. Quinlan. Interpreting the data: Parallel analysis with sawzall. Scientific Programming Journal, 13(4), 2005, pp. 227--298. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Peyton Jones, S., A. Gordon, and S. Finne. Concurrent Haskell. In POPL '96, New York, NY, January 1996. ACM, pp. 295--308. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Peyton Jones, S., A. Reid, F. Henderson, T. Hoare, and S. Marlow. A semantics for imprecise exceptions. In PLDI '99, New York, NY, May 1999. ACM, pp. 25--36. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. 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. Reppy, J. H. CML: A higher-order concurrent language. In PLDI '91, New York, NY, June 1991. ACM, pp. 293--305. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Reppy, J. H. Concurrent Programming in ML. Cambridge University Press, Cambridge, England, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Reppy, J. and Y. Xiao. Toward a parallel implementation of Concurrent ML. In DAMP '08, New York, NY, January 2008. ACM.Google ScholarGoogle Scholar
  40. Shaw, A. Data parallelism in Manticore. Master's dissertation, University of Chicago, July 2007. Available from http://manticore.cs.uchicago.edu.Google ScholarGoogle Scholar
  41. Trinder, P. W., K. Hammond, H.-W. Loidl, and S. L. Peyton Jones. Algorithm strategy = parallelism. JFP, 8(1), January 1998, pp. 23--60. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Tarditi, D., S. Puri, and J. Oglesby. Accelerator: using data parallelism to program gpus for general-purpose uses. SIGOPS Oper. Syst. Rev., 40(5), 2006, pp. 325--335. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Yi, K. An abstract interpretation for estimating uncaught exceptions in standard ml programs. Sci. Comput. Program., 31(1), 1998, pp. 147--173. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Implicitly-threaded parallelism in Manticore

            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

            Full Access

            • Published in

              cover image ACM SIGPLAN Notices
              ACM SIGPLAN Notices  Volume 43, Issue 9
              ICFP '08
              September 2008
              399 pages
              ISSN:0362-1340
              EISSN:1558-1160
              DOI:10.1145/1411203
              Issue’s Table of Contents
              • cover image ACM Conferences
                ICFP '08: Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
                September 2008
                422 pages
                ISBN:9781595939197
                DOI:10.1145/1411204

              Copyright © 2008 ACM

              Publisher

              Association for Computing Machinery

              New York, NY, United States

              Publication History

              • Published: 20 September 2008

              Check for updates

              Qualifiers

              • research-article

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader
            About Cookies On This Site

            We use cookies to ensure that we give you the best experience on our website.

            Learn more

            Got it!