Abstract
Places bring new support for message-passing parallelism to Racket. This paper gives an overview of the programming model and how we had to modify our existing, sequential runtime-system to support places. We show that the freedom to design the programming model helped us to make the implementation tractable; specifically, we avoided the conventional pain of adding just the right amount of locking to a big, legacy runtime system. The paper presents an evaluation of the design that includes both a real-world application and standard parallel benchmarks.
- David Bailey, John Barton, Thomas Lasinski, and Horst Simon. The NAS Parallel Benchmarks. NAS Technical Report RNR-91-002, Aug. 1991.Google Scholar
- David Beazley. Understanding the Python GIL. PyCon 2010, 2010.Google Scholar
- Phillippe Charles, Christian Grothoff, Vijay Saraswat, Christopher Donawa, Allan Kielstra, Kemal Ebcioglu, Christoph von Praun, and Vivek Sarker. X10: An Object-Oriented Approach to Non-Uniform Cluster Computing. In Proc. ACM Intl. Conf. on Object-Oriented Programming, Systems, Languages, and Applications, 2005. Google Scholar
Digital Library
- Katherine E. Coons, Sebastian Burckhardt, and Madanlal Musuvathi. GAMBIT: Effective Unit Testing for Concurrency Libraries. In Proc. ACM Symp. Principles and Practice of Parallel Programming, 2010. Google Scholar
Digital Library
- Damien Doligez and Xavier Leroy. A Concurrent, Generational Garbage Collector for a Multithreaded Implementation of ML. In Proc. ACM Symp. Principles of Programming Languages, 1993. Google Scholar
Digital Library
- Matthew Flatt and Robert Bruce Findler. Kill-Safe Synchronization Abstractions. In Proc. ACM Conf. Programming Language Design and Implementation, 2004. Google Scholar
Digital Library
- Matthew Flatt, Robert Bruce Findler, Shriram Krishnamurthi, and Matthias Felleisen. Programming Languages as Operating Systems (or, Revenge of the Son of the Lisp Machine). In Proc. ACM Intl. Conf. Functional Programming, 1999. Google Scholar
Digital Library
- Matthew Fluet, Mike Rainey, John Reppy, and Adam Shaw. Implicitly-threaded parallelism in Manticore. In Proc. ACM Intl. Conf. Functional Programming, 2008. Google Scholar
Digital Library
- Simon Marlow, Tim Harris, Roshan P. James, and Simon Peyton Jones. Parallel Generational-copying Garbage Collection with a Block-structured Heap. In Proc. Intl. Symp. on Memory Management, 2008. Google Scholar
Digital Library
- Simon Marlow, Simon Peyton Jones, and Satnam Singh. Runtime Support for Multicore haskell. In Proc. ACM Intl. Conf. Functional Programming, 2009. Google Scholar
Digital Library
- George C. Necula, Scott McPeak, Shree Prakash Rahul, and Westley Weimer. CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs. In Proc. Intl. Conf. Compiler Construction, pp. 213--228, 2002. Google Scholar
Digital Library
- Python Software Foundation. Python design note on threads. http://www.python.org/doc/faq/library/#can-t-we-get-rid-of-the-global-interpreter-lock, 2008.Google Scholar
- Python Software Foundation. multiprocessing - Process-based ''threading'' interface. http://docs.python.org/release/2.6.6/library/multiprocessing.html#module-multiprocessing, 2011.Google Scholar
- John H. Reppy. Concurrent Programming in ML. Cambridge University Press, 1999. Google Scholar
Digital Library
- Konstantinos Sagonas and Jesper Wilhelmsson. Efficient Memory Management for Concurrent Programs that use Message Passing. Science of Computer Programming 62(2), pp. 98--121, Oct. 2006. Google Scholar
Digital Library
- Stefan Savage, Michael Burrows, Greg Nelson, Patrick Sobalvarro, and Thomas Anderson. Eraser: A Dynamic Data Race Detector for Multithreaded Programs. Transactions on Computer Systems 15(4), pp. 391--411, 1997. Google Scholar
Digital Library
- Werner Schuster. Future of the Threading and Garbage Collection in Ruby - Interview with Koichi SasadaThread State and the Global Interpreter Lock. http://www.infoq.com/news/2009/07/future-ruby-gc-gvl-gil, July 31, 2009.Google Scholar
- Peter Sewell, Susmit Sarkar, Scott Owens, Francesco Zappa Nardelli, and Magnus O. Myreen. x86-TSO: A Rigorous and Usable Programmer's Model for x86 Multiprocessors. Communications of the ACM 53(7), pp. 89--97, July 2010. Google Scholar
Digital Library
- James Swaine, Kevin Tew, Peter Dinda, Robert Bruce Findler, and Matthew Flatt. Back to the futures: Incremental Parallelization of Existing Sequential Runtime Systems. In Proc. ACM Intl. Conf. on Object-Oriented Programming, Systems, Languages, and Applications, 2010. Google Scholar
Digital Library
- Adam Wick and Matthew Flatt. Memory Accounting without Partitions. In Proc. Intl. Symp. on Memory Management, 2004. Google Scholar
Digital Library
Index Terms
Places: adding message-passing parallelism to racket
Recommendations
Places: adding message-passing parallelism to racket
DLS '11: Proceedings of the 7th symposium on Dynamic languagesPlaces bring new support for message-passing parallelism to Racket. This paper gives an overview of the programming model and how we had to modify our existing, sequential runtime-system to support places. We show that the freedom to design the ...
An empirical study on parallelism in modern open-source projects
SEPS 2015: Proceedings of the 2nd International Workshop on Software Engineering for Parallel SystemsWriting parallel programs is hard, especially for inexperienced programmers. Parallel language features are still being added on a regular basis to most modern object-oriented languages and this trend is likely to continue. Being able to support ...
Hierarchical memory management for parallel programs
ICFP '16An important feature of functional programs is that they are parallel by default. Implementing an efficient parallel functional language, however, is a major challenge, in part because the high rate of allocation and freeing associated with functional ...







Comments