?

Log in

No account? Create an account

Parallel Programming: August 2012 Update

This release of the parallel programming book features a completion of the functional-testing validation chapter (performance testing likely gets a separate chapter), updates to the locking and transactional-memory sections, and lots of fixes, primarily from Namhyung Kim, but with a fix to a particularly gnarly memory-ordering example from David Ungar. (The ppcmem tool is even more highly recommended as a result.)

This release is rather late. This tardiness was in roughly equal parts due to:

  1. Inertia.
  2. Unexpected requests for more information on hardware transactional memory.
  3. Frequent changes in approach to the validation chapter.
  4. A sudden desire to add a third example to the "Partitioning and Synchronization Design" chapter. This was motivated by seeing people blog on the difficulty of solving mazes in parallel, and it would indeed be difficult if you confined yourself to their designs. However, the results were surprising, so much so that I published paper describing a scalable solution, which was not simply embarrassingly parallel, but rather humiliatingly parallel. Which means that this chapter is still short a third example.

Future releases will hopefully return to the 3-4 per year originally intended.

As always, git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/perfbook.git will be updated in real time.
The git archive for “Is Parallel Programming Hard, And, If So, What Can You Do About It?” is once again available from git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/perfbook.git. A big “thank you” to everyone who worked so hard to get kernel.org back!!!

In addition, Lu Yang, Xie Baoyou, and Yu Chen are working on another translation effort, with much of the book already translated to Chinese. A download is said to be available here, though my Chinese is not up to the task of figuring out exactly how to download it, even with the help of Google Translate.

I am hoping that this group and the group reported earlier will continue to make great progress on this!
Cheedoong Drung has started a Chinese translation of “Is Parallel Programming Hard, And, If So, What Can You Do About It?”. He is making good progress, and would also be happy to have others join in. So if you have good Chinese and English skills (I guess I am one for two on that one), get in touch with Cheedoong. (His contact information is on his web site).

Parallel Programming: Temporary Home

Due to some unscheduled downtime, perfbook's usual home is unavailable. I have therefore posted a recent PDF of perfbook here.

Parallel Programming: August 2011 Update

This release of the parallel programming book features a new data-ownership chapter, the start of a new validation chapter, and lots of fixes, primarily from Elie De Brauwer.

I expect to put out the next release in December. I will continue on validation, and hopefully get a few other things accomplished.

As always, git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/perfbook.git will be updated in real time.

Parallel Programming: May 2011 Update

Once again, a big thank you for everyone who contributed to the parallel-programming book. This edition includes:

  1. Nicer fonts, courtesy of Tom Gunderson.
  2. Front and back cover art, courtesy of Melissa Broussard.
  3. Greatly expanded locking chapter (though this chapter never really will be complete).
  4. An appendix covering recent history of RCU in the Linux kernel.
  5. A section introducing RCU concepts as preparation for RCU fundamentals.
  6. A section covering seqlock.
  7. A conflicting-views section covering CPU evolution.

I expect to put out the next update in August. My guess is that I will focus on data ownership and perhaps a bit on data structures, but I do reserve the right to change plans at any point. ;–)

As always, git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/perfbook.git will be updated in real time.

Parallel Programming: Update

Thanks to everyone who provided comments, criticisms, and, most of all, patches to the parallel-programming book announced last month. Several of the contributions were quite substantial, particularly a couple that fixed my extensive abuse of the \url{} latex command. A number of the comments had to do with format, and so the new version has a number of improvements:


  1. Embedded fonts, which make the PDF compatible with various printing services.
  2. PDF hyperlinks, both internal and external.
  3. A set of PDF bookmarks corresponding to the table of contents.
  4. An experimental single-column version.
  5. A tarball of an experimental HTML version.


A number of people convinced me to move from latex to pdflatex, which I should have done years ago. Quarter-century-old habits die hard, I guess.

I expect to release updates every three to six months. However, for the impatient, git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/perfbook.git will be updated in real time, as always.

Parallel Programming: What Ted Said!!!

Ted gave a great presentation on improving ext4's performance and scalability, but the best part was his call for people to document which lock protects each variable and structure field. This would be a great step forward, even given that this information would often be outdated. You would at least know what the intended locking design was some time in the past. ;–)
I presented “Is Parallel Programming Hard, And, If So, Why?” at the Multicore and Parallel Computing Miniconf, and had the good fortune of having Linus in the audience. As you will quickly learn if you post to LKML, Linus often gives very insightful (and sometimes quite pointed) feedback. My presentation was no exception.

Linus noted that many parallel programming experts are unwilling to admit that there are algorithms that do not parallelize nicely.

As you might expect, I responded by saying that parallelism is an optimization, and like other optimizations has places where it works well and places where it does not.

What else could I have said?

Parallel Programming: Announcement

As some of you know, I have been working on a book on parallel programming. My thought had been to complete it, then announce it. But I finally realized that it really never will be complete, at least not as long as people keep coming up with new parallel-programming ideas, which I most definitely hope will continue for a very long time.

So, here it is!