Block Diagram Programming
It is important to distinguish between the different ways in which problems may be decomposed or delegated to a multiplicity of processor cores. For example, some problems, typically computations on large arrays, or cellular simulations such as of atmospheres, naturally decompose into parallel geometries in which each core is doing the same thing to a different part of the array of data. In some cases of this sort the cores have actually run the same program in synchrony by using combinatorial logic rather than program branches to make decisions. Many people seem to think of multicore computing in terms of this sort of model, and contemplate compilers which somehow recognize this sort of thing. The idea is to start with a sequential computer program written in the programming language du jour, and to transform it somehow into a parallel program.