Good parallel algorithms books?

I'm interested in learning more about parallel algorithms and data structures (since it looks like they're going to become more and more important), and I have access to a decent university library. Does anybody have some favorite books or papers I might read?

As usual on LtU, I'm also interested in how programming languages can make parallel programming faster, more scalable, and/or easier. So if you have some cool programming languages oriented toward parallel stuff, I'd love to hear of them so I can have a look.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Might be relevant

Synchronization Algorithms and Concurrent Programming by Gadi Taubenfeld looks like a pretty good discussion of fundamental topics. It is not programming language oriented.

I haven't read the book yet, but I know the author (a former boos, actually), and he is an expert in the field.

Wait Free Synchronization

Maurice Herlihy has also done lots of work in this area; his January 1991 TOPLAS paper on Wait Free Synchronization planted a lot of seeds. This work describes a hierarchy of consensus primitives that can be used to create sharable data structures.

auto parallel compilation

This is a little off topic as I don't have a book recommendation, but I was wondering if anyone could point me to a good resource about auto parallel compilation. Specifically, all the resources I've found are oriented to detecting parallelism in program loops (data parallelism? data dependance and data anti dependance). I'm interested in work on detecting when a program performs 'file matching' ie reads a set of sorted files: a master file and sub files. It reads one row from the master then reads sub files until the keys are equal and then process the rows. Then reads the next master row etc...

I believe this is called 'file parallelism' or 'task parallelism'.

The file access could be analogous to accessing rows of an array. Has anyone seen this applied to file parallelism?