Wednesday, November 5, 2014

Parallel Programming Concepts (.NET related)

Parallel execution - It's all about loaded computations.
Common Types of Parallelism
Data
    amount of data processed by one operation in parallel.
Patterns
    Parallel Loops
Implementations
    Parallel.Foreach
    Parallel.For
Task
    Some data or amount of data processed by many operations.
Patterns
    Parallel tasks
Implementations
    Parallel.Invoke
Dataflow
    Operations processed in some flow or order.
Patterns
    Features
    Pipeline
Embarrassingly parallel
    computations entirely independent of one another. No dataflow in between the options.

Patterns
Parallel Loops
Parallel.For / Parallel.Foreach
Parallel Tasks
Parallel.Invoke
Parallel Aggregation
Map-Reduce
Producer-Consumer
By Parallel Loops with TLS (Task Local Storage) parameter
or by Wait All One By One
Futures
Dynamic Task Parallelism
Pipelines
+ Concurrent Data Structures.
Dataflow
(many to one + one to many, ContinueWhenAll)
+Concurrent Data Structures.
Speculative Execution
Wait All One By One
Facade Task (Threads saving by APM)

The TPL's main pattern-approach
Fork-join
Custom Partitioning Strategies
range (static)
stride (static)
chunk (dynamic)
hash (dynamic)

No comments:

Post a Comment