Skip to main content

Practical Many-Core Programming

  • Chapter
  • First Online:
Programming Many-Core Chips

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

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

eBook
USD 16.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 119.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 109.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

References

  1. 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

    Google Scholar 

  2. Gruman G, Hattersley M, Butler T R (2009) Mac OS X Snow Leopard Bible. Wiley & Sons

    Google Scholar 

  3. Reinders J (2007) Intel Thread Building Blocks: Outfitting C++ for Multi-core Processor Parallelism. O’Reilly Media

    Google Scholar 

  4. 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

    Google Scholar 

  5. 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

    Google Scholar 

  6. Chapman B, Jost G, van der Pas R, Kuck D J (2007) Using OpenMP: Portable Shared Memory Parallel Programming. The MIT Press

    Google Scholar 

  7. The OpenMP Architecture Review Board (2008) The OpenMP Application Program Interface. http://www.openmp.org/mp-documents/spec30.pdf. Accessed 10 January 2011

    Google Scholar 

  8. 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

    Google Scholar 

  9. Ravela S C (2010) Comparison of Shared Memory Based Parallel Programming Models. PhD Thesis, School of Computing, Blekinge Institute of Technology.

    Google Scholar 

  10. 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

    Google Scholar 

  11. Faxén K-F (2008) Wool: a Work Stealing Library. SIGARCH Computer Architecture Newsletter 36(5):93-100

    Google Scholar 

  12. Sanders J, Kandrot E (2010) CUDA by Example: An Introduction to General-Purpose GPU Programming. Addison-Wesley Professional

    Google Scholar 

  13. Khronos Group (2010) OpenCL: Introduction and Overview. http://www.khronos.org/developers/library/overview/opencl_overview.pdf. Accessed 11 January 2011

    Google Scholar 

  14. 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

    Google Scholar 

  15. 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

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to András Vajda .

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics