The challenge of Thread Level Parallelism?

Tim Bray recently wrote about the impact of TLP on software developers: This doesn’t mean it’s easy. My Zeppelin project has client-side and server-side code, and both sides are highly parallel; it has been a complete fucking nightmare to debug, and I claim to be good at debugging. If we’re going to empower application programmers to get the most out of the high-TLP chips, we need big advances in development and debugging technology. I think the key thing isn’t so much better debugging technology as better testing technology. Given JUnit or equivalent, I’m pretty confident that I can pull together a good set of unit tests for just about any conventional single-threaded application. But when it gets parallel, there’s a problem in that I don’t have a general mental framework for how to build a test suite. Once we figure out some of design patterns, there are grounds for hope that we can do some tooling around it for testing and debugging.
I have heard this sort of comment before and know that there are folk out there in the TDD community who have experience with and solutions for designing (and testing) parallelism. If you fall into this category then now seems like a good time to start sharing what you've learnt...