Why Parallel Programming Is So Hard
rebelscience.blogspot.com
rebelscience.blogspot.com
There's some hilarious stuff there, though.
Wide ranging examples, too. I'm sure he could come up with one or two, but can he come up with a whole bunch, which span a reasonably wide swath of algorithm space?
Show me how to, say, invert a matrix, which is a possible-yet-annoyingly-hard problem to parallelize ordinarily, and I'll take it seriously.
Message passing is a great idea, check out Erlang if you want more. Reading this guy's articles, it seems like he is half way towards something interesting, but has blown it all out of proportion. He's at war with his daemons, he even lists some of them on his "Enemies" page.
Very well put, I get the same impression about decomposition. The bottom line is each CPU core can execute some sequence of instructions. If there's more than one core, there can be more than one sequence. Threads are the best current abstraction for that, and this guy goes off on how threads are evil and all this. At the heart of it, there are no objects just data flowing from disk to ram to registers, calculations being performed in the core and data flowing back.
There are always monads in Haskell for really putting concurrency into the forefront...
Makes sense!
The problem is that "sequential" vs. "concurrent" isn't solely an implementaion choice. It's a property of the problem. Some problems are inherently sequential, and can't be meaningfully scaled to an arbitrary number of cores. So color me skeptical, basically. Concurrency is hard because it is hard. While there may be a paradigm out there that makes it less so, I'm going to need to see it in operation before I make any judgements.
"Many of the early ideas were motivated by observations of what was easy to implement in the hardware rather than what was easy to use" (see http://www.acmqueue.com/modules.php?name=Content&pa=show...)
i.e parallel programming was always an afterthought. To architects, building a parallel system was viewed primarily as a hardware hurdle to overcome.
Ants work together to form an efficient parallel system, where is their global clock?
More interesting than whether they are moving at the same speed, is whether they are thinking at the same speed, particularly, whether they think with a common tick. Since time appears for the most part to be continuous, that's not going to get you a tick, nothing for the ants to synchronise their clocks to.
If being in the same frame of reference was enough, then you could just put two computers in the same room and call it a synchronised system.