Parallel Programming Model Watch
From View
A programming model is a bridge between a system developer’s natural model of an application and an implementation of that application on available hardware. A programming model must allow the programmer to balance the competing goals of productivity and implementation efficiency. As such, it is typically concerned with either the implicit or explicit specification of the following program properties:
- The computational tasks – How is the application divided into parallel tasks?
- Mapping computational tasks to processing elements – The balance of computation determines how well utilized the processing elements are.
- Distribution of data to memory elements – Locating data to smaller, closer memories increases the performance of the implementation.
- The mapping of communication to the inter-connection network – interconnect bottlenecks can be avoided by changing the communication of the application.
- Inter-task synchronization – The style and mechanisms of synchronizations can influence not only performance, but also functionality.
The following table categorizes a variety of parallel models for embedded and high performance computing based on the above properties:
| Model | Domain | Task Identification | Task Mapping | Data Distribution | Communication Mapping | Synchronization |
| Real-Time Workshop (MathWorks) | DSP | Explicit | Explicit | Explicit | Explicit | Explicit |
| BMDFM (Binary Modular DataFlow Machine) | General | Implicit (transparent dataflow semantics) | Implicit | Implicit | Implicit | Implicit (transparent dataflow semantics) |
| TejaNP | Network | Explicit | Explicit | Explicit | Explicit | Explicit |
| YAPI | DSP | Explicit | Explicit | Explicit | Explicit | Implicit |
| MPI | HPC | Explicit | Explicit | Explicit | Implicit | Implicit |
| Pthreads | General | Explicit | Explicit | Implicit | Implicit | Explicit |
| MapReduce | Large Data sets | Explicit | Implicit | Implicit | Implicit | Explicit |
| StreamIt | DSP | Explicit | Implicit | Explicit | Implicit | Implicit |
| DataCutter | HPC | Explicit | Implicit | Implicit | Implicit | Implicit |
| Click to network processors | Network | Implicit | Implicit | Implicit | Implicit | Explicit |
| OpenMP | HPC | Implicit (directives) | Implicit | Implicit | Implicit | Implicit (directives) |
| HPF | HPC | Implicit | Implicit | Implicit (directives) | Implicit | Implicit |
| Invocation Model of Process Expression | General | Explicit (dependencies) | Implicit | Implicit | Implicit | Explicit (dependencies) |
Other Models (to be categorized)
- PGAS, Partitioned Global Address Space Programming Models
- Berkeley UPC, Unified Parallel C
- Titanium, an explicitly parallel dialect of Java
- Parallel Programming Languages
- Ease & now Carnap
- Cilk
- Brook
- Sequoia Language
- HPCS Languages
- Charm++ Migratable objects and adaptive runtime systems
[edit]
Additional Resources
- BMDFM (Binary Modular DataFlow Machine)
- Erlang: Ericsson Computer Science Laboratory, soft realtime, declarative, functional language for concurrent, distributed systems
- Wen Mei Hwu's position: Sequential programming models for manycore
- Project COSA: Parallel, signal-based, synchronous software model
