Types of Parallelism
There are three types of parallel visualization to consider. Task parallelism uses separate processes to complete separate kinds of tasks. The tasks must coordinate to ensure they execute in the correct order so that, for instance, one doesn't try to calculate isosurfaces for data before the file has been read.
Timesteps | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
Processes | 1 | Read file 1 | Isosurface 1 | Cut plane 1 | ||
2 | Read file 2 | Streamlines 2 | Render | |||
3 | Read file 3 | Triangulate 3 | Decimate 3 | Glyph 3 |
With pipeline parallelism, each process performs only one kind of task and then sends the resulting data to the next process. It's like a factory production line. In the example below, using parallel processes helps to increase frame rate because the three processes are working on three frames simultaneously.
Timesteps | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
Processes | 1 | Read file 1 | Read file 2 | Read file 3 | ||
2 | Isosurface 1 | Isosurface 2 | Isosurface 3 | |||
3 | Render 1 | Render 2 | Render 3 |
For data parallelism, the data set is partitioned among the processes, and all processes execute the same operations on their data partition. This scales well as long as the data and operations can be decomposed. The more that operations need to communicate in order to process the data, the poorer it will scale.
Timesteps | ||||
---|---|---|---|---|
1 | 2 | 3 | ||
Processes | 1 | Read partition 1 | Isosurface partition 1 | Render partition 1 |
2 | Read partition 2 | Isosurface partition 2 | Render partition 2 | |
3 | Read partition 3 | Isosurface partition 3 | Render partition 3 |