• About Jakob Engblom and this blog
Observations from Uppsala Computer Simulation, Virtual Platforms, Embedded Programming, Multicore and More (by Jakob Engblom)

Book Review: Intel’s Multicore Programming Book

2007 December 9 21:43 / 2 Comments / Jakob

Multicore programming book coverThe book “Multicore Programming – Increasing Performance through Software Multithreading” by Shameem Akhter and Jason Roberts is part of a series of books put out by Intel in their multicore software push. In case you have not noticed, Intel has a huge market push currently where they give seminars, publish articles and books, and give curricula to universities in order to get more parallel software in place. I read this book recently, and here is a short review.
First a short note about the Intel multicore education push: the end goal is to make sure that the average computer user will perceive value (more features and higher performance) from buying multicore Intel processors for their home or business PC. In the process, they do provide a useful community service, and presumably lots of jobs for PhDs in parallel programming and computing. This focus on the desktop computing arena has implications for the contents of books like this.

The authors are experienced parallel software writers working at Intel, and who wrote this book for Intel as part of the multicore push.

The book covers the obvious topics for any introduction book to parallel programming:

  • Application patterns for parallel programs: various ways to structure computations to extract or expose parallelism.
  • Programming APIs.
  • Common problems in parallel code.
  • Debugging parallel code.
  • Performance tuning parallel code.
  • Fundamental computer architecture.

In my mind, the best part of the book is the application patterns and programming APIs section. The most interesting aspect of the book was the weight given to the programming APIs and debug tools for Windows. In comparison, most other texts that I have seen focus on the portable and generally available pthreads/Posix threads API or OpenMP. The Windows APIs are actually pretty cool and powerful. Note that the .net managed code (CLR) environment has its own set of APIs similar to but distinct from the general old Win32 API.

The authors clearly have a weak spot for OpenMP, and more time is spent on OpenMP than any other API. I remain unconvinced about its generality, but it certainly has some interesting properties. But it is far from automatic parallelization. MPI gets a very strange treatment, being tucked away in a late part of the debugging chapter. Why it was not considered a full programming API is beyond me.

A section on memory consistency is pretty well written and is one of the best expositions on how that actually works on x86 and Itanium architectures.

The worst part of the book is the strangely confused and forced section on hardware architecture. Being an Intel (trademark) book about Intel (trademark) processors and programming them, the chapter on Pentium (r) and Core (r) and Itanium (trademark) processors was probably mandatory. But to someone with prior knowledge of computer architecture it is all very confused, trying to press ILP together with SMT (HyperThreading) and multicore into some joint thread concept that just does not work as a pedagogical concept.  Also, Itanium takes up an inordinate amount of space for what is basically a moribund architecture. But I guess that Intel (trademark) cannot acknowledge that Itanium (trademark) is a titanic disaster. At least not yet.  This chapter is also full of little (r) and ™ markers and various Intel product names that really makes it harder to read.

There is a good description of Intel multithreaded programming tools, not surprisingly.

Overall, the book offers a good read, but it suffers from also being Intel PR material. I do not recommend against reading it, especially not if you are programming in an x86 desktop environment. But if you are attacking an embedded Power Architecture problem, I think there are better sources.

Note for publicity thinkers: I bought this book after reading a technical article at Embedded.com “Technical Insights”. Submitting book chapters or excerpts as technical articles there could drive readers and buyers to your books. Worked on me at least, at least this one time.

Tweet
Posted in: multicore computer architecture, multicore software, programming, review / Tagged: books, Intel, Itanium, Jason Roberts, Multicore programming, OpenMP, Shamemm Akhter, SMT

2 Thoughts on “Book Review: Intel’s Multicore Programming Book”

  1. Miguel Santana on 2008 March 25 at 10:53 said:

    Could you be so kind as to recommend other sources for the multicore embedded area?

    Thanks ahead of time

    Miguel

  2. Jakob on 2008 March 25 at 11:53 said:

    Depends on what you want to do… for software in general, there is currently not a whole lot of formal publication and good books out there. My best tip is to chase things like my ESC presentation on debug of multicore software (see http://www.engbloms.se/jakob_publications.html), and various whitepapers from vendors. I tend to try to follow technical articles at embedded.com and similar places to see what is going on.

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Post Navigation

← Previous Post
Next Post →

Recent Posts

  • Military Science Fiction – The Books Blur Together
  • Wind River Blog: Starting & Configuring Simics
  • Wind River Blog:
  • Nudge Theory and Graphical User Interfaces
  • Wind River Blog: Collaborating with Recording Checkpoints
  • Wind River Blog: Simics 4.8 is Here
  • A Few Electrons too Many
  • Wind River Blog: Visuality NQ CIFS Server on Simics
  • Everything in the Cloud?
  • Wind River Blog: TCF and Simics
  • Off-Topic: Moving Bad Piggies Save Games
  • Two Cores, Four Cores, Eight Cores – Mobile Variety
  • Bliss: Failing to Pivot for Ideology
  • Wind River Blog and Movie: Demo of Simics Debugging
  • Simulation vs Reality in Schlock Mercenary

Categories

  • appearances (30)
  • articles (21)
  • blogging (10)
  • books (7)
  • business issues (31)
  • computer architecture (35)
  • conferences (34)
  • EDA (50)
    • ESL (35)
  • embedded (78)
    • embedded software (57)
    • embedded systeme (50)
  • general research (6)
  • history (32)
    • general history (7)
    • history of computing (26)
  • off-topic (94)
    • biking (5)
    • board games (1)
    • computer games (3)
    • desktop software (35)
    • food and drink (1)
    • funny (12)
    • gadgets (24)
    • Politics (3)
    • popular culture (5)
    • trains (5)
    • transportation (10)
    • travel (10)
    • websites (3)
  • parallel computing (92)
    • multicore computer architecture (51)
    • multicore debug (22)
    • multicore software (65)
  • programming (109)
  • review (8)
  • security (19)
  • teaching (7)
  • testing (9)
  • uncategorized (12)
  • virtual things (131)
    • computer simulation technology (68)
    • virtual machines (18)
    • virtual platforms (99)
    • virtualization (14)
  • Wind River Blog (43)

Tags

ARM blog commentary Cadence Checkpointing clock-cycle models Communications of the ACM computer architecture conference cycle accuracy debugging Domain-specific languages eclipse embedded freescale G900 heterogeneous homogeneous IBM Intel iPod lego linux mobile phones multicore off-topic office 2007 operating systems p4080 podcast commentary power architecture rant research reverse debugging reverse execution S4D SiCS Multicore days Simics simulation software tools Sun SystemC video virtualization Vista Windows

1

  • F-Secure Blog

Blogs and news

  • Andras Vajda's blog (on multicore)
  • Embedded in Academia (John Regehr)
  • Grant Martin
  • Jack Ganssle
  • My Wind River Blog
  • Security Now podcast
  • Secworks (Joachim Strömbergson)
  • Simon Kågström
  • Synopsys View from the Top
  • Worse Than Failure

Archives

  • June 2013 (3)
  • May 2013 (4)
  • April 2013 (1)
  • March 2013 (4)
  • February 2013 (1)
  • January 2013 (3)
  • December 2012 (2)
  • November 2012 (2)
  • October 2012 (1)
  • September 2012 (6)
  • August 2012 (4)
  • July 2012 (4)
  • June 2012 (3)
  • May 2012 (4)
  • April 2012 (2)
  • March 2012 (3)
  • February 2012 (1)
  • January 2012 (6)
  • December 2011 (2)
  • November 2011 (3)
  • October 2011 (4)
  • September 2011 (5)
  • August 2011 (4)
  • July 2011 (3)
  • June 2011 (4)
  • May 2011 (7)
  • April 2011 (1)
  • March 2011 (3)
  • February 2011 (5)
  • January 2011 (1)
  • December 2010 (4)
  • November 2010 (3)
  • October 2010 (5)
  • September 2010 (5)
  • August 2010 (5)
  • July 2010 (6)
  • June 2010 (5)
  • May 2010 (3)
  • April 2010 (4)
  • March 2010 (3)
  • February 2010 (4)
  • January 2010 (7)
  • December 2009 (6)
  • November 2009 (6)
  • October 2009 (7)
  • September 2009 (6)
  • August 2009 (7)
  • July 2009 (11)
  • June 2009 (5)
  • May 2009 (10)
  • April 2009 (7)
  • March 2009 (8)
  • February 2009 (9)
  • January 2009 (12)
  • December 2008 (8)
  • November 2008 (9)
  • October 2008 (9)
  • September 2008 (10)
  • August 2008 (13)
  • July 2008 (12)
  • June 2008 (8)
  • May 2008 (9)
  • April 2008 (10)
  • March 2008 (7)
  • February 2008 (8)
  • January 2008 (5)
  • December 2007 (5)
  • November 2007 (7)
  • October 2007 (7)
  • September 2007 (12)
  • August 2007 (9)
  • July 2007 (2)
© Copyright 2013 - Observations from Uppsala
Infinity Theme by DesignCoral / WordPress