in reply to "Swarming"

That's a strategy that can be applied to various problems. When you can use it, it's a very effective way to make use of multi-processors/machine clusters.

It seems to be particulary well suited for problems where the processing can be split into more or less independent sections. Example: most fractals can be rendered partially - each process takes on a "tile" and calculate only that part.

Recently, I've been thinking about audio processing - where parallel audio streams can be split out:

CPU 1 CPU 2 CPU 3 O source one O source two | | +-----------+ | | | | O effect 1 O effect 2 O effect 3 | | | | +--------------+ O effect 4 O effect 5 | | | | O output 1 O output 2
Signals go in from the top and exit at the bottom (usually in small batches). Each column can in principle be taken on by a different process(or).