Abstract
Many language implementations, particularly for high-level and scripting languages, are based on carefully honed runtime systems that have an internally sequential execution model. Adding support for parallelism in the usual form -- as threads that run arbitrary code in parallel -- would require a major revision or even a rewrite to add safe and efficient locking and communication. We describe an alternative approach to incremental parallelization of runtime systems. This approach can be applied inexpensively to many sequential runtime systems, and we demonstrate its effectiveness in the Racket runtime system and Parrot virtual machine. Our evaluation assesses both the performance benefits and the developer effort needed to implement our approach. We find that incremental parallelization can provide useful, scalable parallelism on commodity multicore processors at a fraction of the effort required to implement conventional parallel threads.
- }}Python design note on threads, 2008. http: //www.python.org/doc/faq/library/ #can-t-we-get-rid-of-the-global-interpreter-lock.Google Scholar
- }}ALLEN, E., CHASE, D., HALLETT, J., LUCHANGCO, V., MAESSEN, J., AND STEELE, G. The Fortress language spec- ification. http://research.sun.com/projects/plrg/ fortress.pdf, 2005.Google Scholar
- }}ARMSTRONG, J. A history of Erlang. In HOPL III: Pro- ceedings of the third ACM SIGPLAN conference on History of programming languages (2007), pp. 6--1--6--26. Google Scholar
Digital Library
- }}BAILEY, D., BARTON, J., LASINSKI, T., AND SIMON, H. The NAS parallel benchmarks.Tech. Rep. RNR-91-002, NASA Ames Research Center, August 1991.Google Scholar
- }}BLELLOCH, G. Implementation of a portable nested data- parallel language. Proceedings of the Fourth ACM SIGPLAN Symposium on Principles and Practice of Parallel Program- ming (1993), 102--111. Google Scholar
Digital Library
- }}BLUMOFE, R., JOERG, C., KUSZMAUL, B., LEISERSON, C., RANDALL, K., AND ZHOU, Y. Cilk: An efficient mul- tithreaded runtime system. ACM SIGPLAN Notices (1995), 207--216. Google Scholar
Digital Library
- }}BOURGOIN, M., JONQUET, A., CHAILLOUX, E., CANOU, B., AND WANG, P. OCaml4Multicore, 2007. http://www. algo-prog.info/ocmc/web/.Google Scholar
- }}CHAKRAVARTY, M. T., LESHCHINSKIY, R., JONES, S. P., KELLER, G., AND MARLOW, S. Data Parallel Haskell: A status report. Proceedings of the 2007 Workshop on Declara- tive Aspects of Multicore Programming (2007), 10--18. Google Scholar
Digital Library
- }}CHAMBERLAIN, B. L., CALLAHAN, D., AND ZIMA, H. P. Parallel programming and the Chapel language. International Journal of High Performance Computing Applications (Au- gust 2007), 291--312. Google Scholar
Digital Library
- }}CHARLES, P., GROTHOFF, C., SARASWAT, V., DONAWA, C., KIELSTRA, A., EBCIOGLU, K., VON PRAUN, C., AND SARKER, V.X10: An object-oriented approach to non- uniform cluster computing. Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Program- ming, Systems, Languages, and Applications (2005), 519-- 538. Google Scholar
Digital Library
- }}FLUET, M., RAINEY, M., REPPY, J., SHAW, A., AND XIAO, Y. Manticore: A heterogeneous parallel language. Proceed- ings of the 2007 Workshop on Declarative Aspects of Multi- core Programming (2007), 37--44. Google Scholar
Digital Library
- }}FRUMKIN, M., SCHULTZ, M., JIN, H., AND YAN, J. Im- plementation of NAS parallel benchmarks in Java.Tech. Rep. NAS-02-009, Ames Research Center, Moffett Field, CA, USA, 2002.Google Scholar
- }}HALSTEAD, JR., R. H. MULTILISP: A language for concur- rent symbolic computation. ACM Transactions on Program- ming Languages and Systems (TOPLAS) (October 1985), 501--538. Google Scholar
Digital Library
- }}JONES, S., GORDON, A., AND FINNE, S.Concurrent Haskell. Conference Record of the 23rd ACM SIGPLAN- SIGACT Symposium on Principles of Programming Lan- guages (POPL '96) (January 1996), 295--308. Google Scholar
Digital Library
- }}JUSZCZAK, C. Fast mergesort implementation based on half- copying merge algorithm, 2007. http://kicia.ift.uni. wroc.pl/algorytmy/mergesortpaper.pdf.Google Scholar
- }}Thread state and the global interpreter lock. http://docs.python.org/c-api/init.html# thread-state-and-the-global-interpreter-lock, March 2010.Google Scholar
Index Terms
Back to the futures: incremental parallelization of existing sequential runtime systems
Recommendations
Back to the futures: incremental parallelization of existing sequential runtime systems
OOPSLA '10: Proceedings of the ACM international conference on Object oriented programming systems languages and applicationsMany language implementations, particularly for high-level and scripting languages, are based on carefully honed runtime systems that have an internally sequential execution model. Adding support for parallelism in the usual form -- as threads that run ...
Bulk synchronous parallel ML with exceptions
Bulk Synchronous Parallel ML is a high-level language for programming parallel algorithms. Built upon OCaml and using the BSP model, it provides a safe setting for their implementation, avoiding concurrency related problems (deadlocks, indeterminism). ...
Seeing the futures: profiling shared-memory parallel racket
FHPC '12: Proceedings of the 1st ACM SIGPLAN workshop on Functional high-performance computingThis paper presents the latest chapter in our adventures coping with a large, sequentially-tuned, legacy runtime system in today's parallel world. Specifically, this paper introduces our new graphical visualizer that helps programmers understand how to ...







Comments