Parallel Programming Model Watch

From View

Jump to: navigation, search

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)

Additional Resources

Personal tools