Abstract
In the previous chapters we introduced the foundations for programming many-core chips: current and expected hardware architectures; operating system designs; foundations of parallel programming; the basic programming models that we believe are the most promising ones in the context of many-core chips. This chapter focuses on the concrete technologies available today which we believe will endure the test of time, providing a solid background for programming the many-core chips of the future. Specifically, we cover several task based models (such as Cilk , Grand Central Dispatch, OpenMP , Thread Building Blocks, Microsoft’s Task Parallel Library), data parallel models (illustrated through OpenCL which also supports the task model) and a well established representative of the actor model (Erlang). The goal of this chapter is to provide a guiding map for the choice of the most suitable programming model and implementation library when addressing the challenge of ‘best solution’ for a specific application domain.
With Contribution by Diarmuid Corcoran
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Frigo M, Leiserson C E, Randall K H (1998) The implementation of the Cilk-5 Multithreaded Language. Proceedings of the ACM SIGPLAN 1998 conference on Programming Language Design and Implementation, 212-223
Gruman G, Hattersley M, Butler T R (2009) Mac OS X Snow Leopard Bible. Wiley & Sons
Reinders J (2007) Intel Thread Building Blocks: Outfitting C++ for Multi-core Processor Parallelism. O’Reilly Media
Intel Corporation (2010) Intel Threading Building Blocks. http://www. threadingbuildingblocks.org/uploads/81/91/Latest%20Open%20Source%20Documentation/Getting_Started.pdf. Accessed 11 January 2011
Campbell C, Johnson R, Miller A, Toub S (2010) Parallel Programming with Microsoft .NET: Design Patterns for Decomposition and Coordination on Multicore Architectures (Patterns & Practices). Microsoft Press
Chapman B, Jost G, van der Pas R, Kuck D J (2007) Using OpenMP: Portable Shared Memory Parallel Programming. The MIT Press
The OpenMP Architecture Review Board (2008) The OpenMP Application Program Interface. http://www.openmp.org/mp-documents/spec30.pdf. Accessed 10 January 2011
Podobas A, Brorsson M, Faxén K-F (2010) A Comparison of some recent Task-based Parallel Programming Models. 3rd Workshop on Programmability Issues for Multi-core Computers
Ravela S C (2010) Comparison of Shared Memory Based Parallel Programming Models. PhD Thesis, School of Computing, Blekinge Institute of Technology.
Olivier S L, Prins J F (2010) Comparison of OpenMP 3.0 and Other Task Parallel Frameworks on Unbalanced Task Graphs. International Journal of Parallel Programming 38(5-6):341-360
Faxén K-F (2008) Wool: a Work Stealing Library. SIGARCH Computer Architecture Newsletter 36(5):93-100
Sanders J, Kandrot E (2010) CUDA by Example: An Introduction to General-Purpose GPU Programming. Addison-Wesley Professional
Khronos Group (2010) OpenCL: Introduction and Overview. http://www.khronos.org/developers/library/overview/opencl_overview.pdf. Accessed 11 January 2011
Khronos OpenCL Working Group (2010) The OpenCL Specification Version 1.1. http://www.khronos.org/registry/cl/specs/opencl-1.1.pdf. Accessed 11 January 2011
Armstrong J (2003) Making Reliable Distributed Systems in the Presence of Software Errors. PhD thesis, Royal Institute of Technology, Stockholm, Sweden. http://www.erlang.org/ download/armstrong_thesis_2003.pdf. Accessed 11 January 2011
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
Copyright information
© 2011 Springer Science+Business Media, LLC
About this chapter
Cite this chapter
Vajda, A. (2011). Practical Many-Core Programming. In: Programming Many-Core Chips. Springer, Boston, MA. https://doi.org/10.1007/978-1-4419-9739-5_9
Download citation
DOI: https://doi.org/10.1007/978-1-4419-9739-5_9
Published:
Publisher Name: Springer, Boston, MA
Print ISBN: 978-1-4419-9738-8
Online ISBN: 978-1-4419-9739-5
eBook Packages: EngineeringEngineering (R0)