Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.5555/3241639.3241642acmconferencesArticle/Chapter ViewAbstractPublication PageshotparConference Proceedingsconference-collections
Article

Collection-focused parallelism

Published: 24 June 2013 Publication History

Abstract

Constructing parallel software is, in essence, the process of associating 'work' with computational units. The definition of work is dependent upon the model of parallelism used, and our choice of model can have profound effects on both programmer productivity and run-time efficiency. Given that the movement of data is responsible for the majority of parallelism overhead, and accessing data is responsible for the majority of parallelism errors, data items should be the basis for describing parallel work. As data items rarely exist in isolation and are instead parts of larger collections, we argue that subsets of collections should be the basic unit of parallelism. This requires a semantically rich method of referring to these sub-collections. Sub-collections are not guaranteed to be disjoint, and so an efficient run-time mechanism is required to maintain correctness. With a focus on complex systems, we present some of the challenges inherent in this approach and describe how we are extending Synchronization via Scheduling (SvS) and other techniques to overcome these difficulties. We discuss our experiences incorporating these techniques into a modern video game engine used in an in-development title.

References

[1]
Bay 12 Games: Dwarf Fortress www.bay12games.com/dwarves.
[2]
SimCity www.simcity.com.
[3]
The OpenMP specification for parallel programming http://www.openmp.org.
[4]
Saman P. Amarasinghe and Monica S. Lam. Communication optimization and code generation for distributed memory machines. In Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation, PLDI '93, pages 126-138, New York, NY, USA, 1993. ACM.
[5]
Johan Andersson. Parallel futures of a game engine http://repi.blogspot.com/2009/11/parallel-futures-of-game-engine.html.
[6]
Micah Best, Alexandra Fedorova, Ryan Dickie, Andrea Tagliasacchi, Alex Couture-Beil, Craig Mustard, Shane Mottishaw, Aron Brown, Zhi Huang, Xiaoyuan Xu, Nasser Ghazali, and Andrew Brownsword. Searching for concurrent design patterns in video games. In Henk Sips, Dick Epema, and Hai-Xiang Lin, editors, Euro-Par 2009 Parallel Processing, volume 5704 of Lecture Notes in Computer Science, pages 912-923. Springer Berlin / Heidelberg, 2009.
[7]
Micah J Best, Shane Mottishaw, Craig Mustard, Mark Roth, Parsiad Azimzadeh, Alexandra Fedorova, and Andrew Brownsword. Schedule data not code. In Proceedings of the 3rd USENIX conference on Hot topics in parallelism, HotPar'11, Berkeley, CA, USA, 2011. USENIX Association.
[8]
Micah J. Best, Shane Mottishaw, Craig Mustard, Mark Roth, Alexandra Fedorova, and Andrew Brownsword. Synchronization via scheduling: techniques for efficiently managing shared state. In Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation, PLDI '11, pages 640- 652, New York, NY, USA, 2011. ACM.
[9]
Christian Bienia, Sanjeev Kumar, Jaswinder Pal Singh, and Kai Li. The parsec benchmark suite: Characterization and architectural implications. In Proceedings of the 17th International Conference on Parallel Architectures and Compilation Techniques, October 2008.
[10]
Burton H Bloom. Space/time trade-offs in hash coding with allowable errors. Communications of the ACM, 13:422-426, 1970.
[11]
Mario Botsch, Leif Kobbelt, Mark Pauly, Pierre Alliez, and Br uno Levy. Polygon Mesh Processing. AK Peters, 2010.
[12]
Silas Boyd-Wickizer, Haibo Chen, Rong Chen, Yandong Mao, Frans Kaashoek, Robert Morris, Aleksey Pesterev, Lex Stein, Ming Wu, Yuehua Dai, Yang Zhang, and Zheng Zhang. Corey: An operating system for many cores. In Proceedings of the USENIX Symposium on Operating System Design and Implementation (OSDI '08), pages 43-57, 2008.
[13]
Zoran Budimlic, Michael Burke, Vincent Cavé, Kathleen Knobe, Geoff Lowney, Ryan Newton, Jens Palsberg, David Peixotto, Vivek Sarkar, Frank Schlimbach, and Sagnak Tasirlar. Concurrent collections. Sci. Program., 18(3-4):203-217, August 2010.
[14]
Rong Chen, Haibo Chen, and Binyu Zang. Tiledmapreduce: optimizing resource usages of data-parallel applications on multicore with tiling. In Proceedings of the 19th international conference on Parallel architectures and compilation techniques, PACT '10, pages 523- 534, New York, NY, USA, 2010. ACM.
[15]
Blumofe et al. Cilk: An efficient multithreaded runtime system. Journal of Parallel and Distributed Computing, 37(1):55-69, 1996.
[16]
J. Gregory. Game Engine Architecture. Ak Peters Series. A K Peters, Limited, 2009.
[17]
J. Herath, Y. Yamaguchi, N. Saito, and T. Yuba. Dataflow computing models, languages, and machines for intelligence computations. IEEE Trans. Softw. Eng., 14(12):1805-1828, December 1988.
[18]
Roberto Ierusalimschy, Luiz Henrique de Figueiredo, and Waldemar Celes Filho. Luaan extensible extension language. Softw. Pract. Exper., 26(6):635-652, June 1996.
[19]
Shams M. Imam and Vivek Sarkar. Integrating task parallelism with actors. In Proceedings of the ACM international conference on Object oriented programming systems languages and applications, OOPSLA '12, pages 753-772, New York, NY, USA, 2012. ACM.
[20]
Per-Ake Larson, Spyros Blanas, Cristian Diaconu, Craig Freedman, Jignesh M. Patel, and Mike Zwilling. High-performance concurrency control mechanisms for mainmemory databases. Proc. VLDB Endow., 5(4):298-309, December 2011.
[21]
Michael D. McCool. Structured parallel programming with deterministic patterns. In Proceedings of the 2nd USENIX conference on Hot topics in parallelism, Hot-Par'10, pages 5-5, Berkeley, CA, USA, 2010. USENIX Association.
[22]
Guilherme Ottoni and David I. August. Communication optimizations for global multi-threaded instruction scheduling. In Proceedings of the 13th international conference on Architectural support for programming languages and operating systems, ASPLOS XIII, pages 222-232, New York, NY, USA, 2008. ACM.
[23]
J. Reinders. Intel Threading Building Blocks: Outfitting C++ for Multi-Core Processor Parallelism. O'Reilly, 2007.
[24]
Martin. Rinard and Lam. The design, implementation, and evaluation of jade. ACM Trans. Program. Lang. Syst., 20(3):483-545, 1998.
[25]
Nicholas Vining. The threads that bind us. Game Developer Magazine, April 2012.

Recommendations

Comments

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 0
    Total Downloads
  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 01 Nov 2024

Other Metrics

Citations

View Options

View options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media