In 1966 Michael Flynn proposed a taxonomy of parallel programming models:
SISD: Single Instruction stream, Single Data stream
SIMD: Single Instruction stream, Multiple Data stream
MISD: Multiple Instruction stream, Single Data Stream
MIMD: Multiple Instruction stream, Multiple Data stream
This has not proven to be a completely satisfactory system. For example, it is possible for the same program to run in different categories during the same session, and the same hardware can be configured to operate in categories. In addition, experience with parallel systems has pointed out the need for additional models, including:
Single Program, Multiple Data streams (SPMD)
Multiple Programs, Single Data streams (MPMD)
Task farming
Data parallelism
In this chapter, we will look at the various categories and IPython's support for each.
The SISD model will not be covered here. The SISD model is the standard programming model for single processor machines and is covered in many other books.