I recenty asked a question about parallel programming algorithms which was closed quite fast due to my bad ability to communicate my intent:
I had also recently asked another question, specifically:
Is MapReduce just a generalisation of another programming principle?
The other question was specifically about map reduce and to see if mapreduce was a more specific version of some other concept in parallel programming. This question (about a useful parallel programming algorithm) is more about the whole series of algorithms for parallel programming. You will have to excuse me though as I am quite new to parallel programming, so maybe MapReduce or something that is a more general form of mapreduce is the “only” parallel programming construct which is available, in which case I apologise for my ignorance.
There’s probably two “main” parallel programming constructs.
Map/Reduce is one. At a high, ultra-generic level, it’s just parallel divide-and-conquer. Send out the individual bits to parallel handlers, and combine the results when they arrive.
The other main parallel programming construct is the pipeline… pieces of work go through a series of stages, each of which can be run in a parallel thread.
I think that just about any parallelization algorithm is going to boil down to one of those two. I could be wrong, of course.