SlideShare a Scribd company logo
DOT NET PARALLELISM & MULTICORE COMPUTING
BY
ARAVINDHAN G
OMNIEXTRACT TEAM
GENESIS GROUP
Why parallelism?
What is parallelism?
Types of parallelism in C#
Data Parallelism
Parallel Loops
Task Parallelism
2
AGENDA
3
Why Parallelism?
 Don’t expect your sequential program to run faster on new
processors.
 Still, processor technology advances
 BUT the focus now is on multiple cores per chip
 Today’s desktops typically have 4 cores
 The multi-core revolution puts pressure on software developers
to use parallelism if they want to benefit from future hardware
improvements
4
The Free Lunch is over
 Parallelism means that a programming task can be split into
parts that can be run on several networked processors or
computers.
 Parallel computing is a form of computation in which many
calculations are carried out simultaneously, operating on the
principle that large problems can often be divided into smaller
ones, which are then solved concurrently ("in parallel").
5
What is parallelism?
C# supports two main models of parallelism:
• Data parallelism: where an operation is applied to each
element in a collection.
• Task parallelism: where independent computations are
executed in parallel.
6
Types of Parallelism in C#
A sequential for loop in C#:
int n = ...
for (int i = 0; i<=n; i++)
{
// ...
}
A parallel for loop in C#:
int n = ...
Parallel.For(0, n, i =>
{
// ...
});
7
Parallel Loops in C#
 The language construct for is translated into a
(higher-order) function Parallel.For.
 The argument to Parallel.For is an anonymous method,
specifying the code to be performed in each loop
iteration.
 The arguments to this anonymous method are the start
value, the end value and the iteration variable.
8
Parallel Loops in C#
We can limit the degree of parallelism like this:
var options = new ParallelOptions() {
MaxDegreeOfParallelism = 2 };
Parallel.For(0, n, options, i =>
{
fibs[i] = Fib(i);
});
9
A Simple Example
 Parallel loops have two ways to break or stop a loop
instead of just one.
 Parallel break, loopState.Break(), allows all steps with
indices lower than the break index to run before
terminating the loop.
 Parallel stop, loopState.Stop(), terminates the loop
without allowing any new steps to begin.
10
Terminating a Parallel Loop
 The parallel aggregate pattern combines data
parallelism over a collection, with the aggregation of the
result values to an overall result.
 It is parameterized both over the operation on each
element as well as the combination (aggregation) of the
partial results to an overall results.
An Example of Parallel Aggregates:
var options = new ParallelOptions() {
MaxDegreeOfParallelism = k};
Parallel.ForEach(seq /* sequence */, options,
() => 0, // The local initial partial result
// The loop body
});
11
Parallel Aggregates
 When independent computations are started in different
tasks, we use a model of task parallelism.
 This model is more general than data parallelism, but
requires more detailed control of synchronization and
communication.
 The most basic construct for task parallelism is:
Parallel.Invoke(DoLeft, DoRight);
 It executes the methods DoLeft and DoRight in parallel,
and waits for both of them to finish.
12
Task Parallelism in C#
The following code sorts 2 lists in parallel, providing a
comparison operation as an argument:
Parallel.Invoke( // generate two parallel threads
() => ic1.Sort(cmp_int_lt),
() => ic2.Sort(cmp_int_gt));
13
Example of Task Parallelism
 The implementation of Invoke uses the more basic
constructs
StartNew, for starting a computation;
Wait, WaitAll, WaitAny, for synchronising several
computations.
 Any shared data structure needs to be protected with
locks, semaphores or such.
 Programming on this level is similar to explicitly
managing threads:
it can be more efficient
it is error-prone.
14
Implementation of Task Parallelism
static void SequentialQuickSort(int[] array, int from, int to)
{
if (to - from <= Threshold)
{
InsertionSort(array, from, to);
}
else
{
int pivot = from + (to - from) / 2;
pivot = Partition(array, from, to, pivot);
SequentialQuickSort(array, from, pivot - 1);
SequentialQuickSort(array, pivot + 1, to);
}
}
15
Example: Sequential Code
static void ParallelQuickSort(int[] array, int from, int to, int depthRemaining)
{
if (to - from <= Threshold)
{
InsertionSort(array, from, to);
}
else
{
int pivot = from + (to - from) / 2;
pivot = Partition(array, from, to, pivot);
if (depthRemaining > 0)
{
Parallel.Invoke(
() => ParallelQuickSort(array, from, pivot - 1,
depthRemaining - 1),
() => ParallelQuickSort(array, pivot + 1, to,
depthRemaining - 1));
}
else
{
ParallelQuickSort(array, from, pivot - 1, 0);
ParallelQuickSort(array, pivot + 1, to, 0);
}
}
}
16
Example: Parallel Code
 The preferred, high-level way of coding parallel
computation in C# is through parallel patterns, an
instance of design patterns.
 Parallel patterns capture common patterns of parallel
computation.
 Two main classes of parallelism exist:
Data parallelism, which is implemented through parallel
For/Foreach loops.
Task parallelism, which is implemented through parallel
method invocation.
 Tuning the parallel performance often requires code
restructuring.
17
Summary
Any queries?
Thank You

More Related Content

What's hot

Matlab HTI summer training course Lecture3
Matlab HTI summer training course Lecture3Matlab HTI summer training course Lecture3
Matlab HTI summer training course Lecture3
Mohamed Awni
 

What's hot (20)

Lesson 21. Pattern 13. Data alignment
Lesson 21. Pattern 13. Data alignmentLesson 21. Pattern 13. Data alignment
Lesson 21. Pattern 13. Data alignment
 
Dynamic memory Allocation in c language
Dynamic memory Allocation in c languageDynamic memory Allocation in c language
Dynamic memory Allocation in c language
 
Introduction to MATLAB
Introduction to MATLABIntroduction to MATLAB
Introduction to MATLAB
 
Dynamic Memory Allocation
Dynamic Memory AllocationDynamic Memory Allocation
Dynamic Memory Allocation
 
16 dynamic-memory-allocation
16 dynamic-memory-allocation16 dynamic-memory-allocation
16 dynamic-memory-allocation
 
Matlab for Electrical Engineers
Matlab for Electrical EngineersMatlab for Electrical Engineers
Matlab for Electrical Engineers
 
C dynamic ppt
C dynamic pptC dynamic ppt
C dynamic ppt
 
Parallel programming Comparisions
Parallel programming ComparisionsParallel programming Comparisions
Parallel programming Comparisions
 
MATLAB/SIMULINK for engineering applications: day 3
MATLAB/SIMULINK for engineering applications: day 3MATLAB/SIMULINK for engineering applications: day 3
MATLAB/SIMULINK for engineering applications: day 3
 
Java 8 streams
Java 8 streams Java 8 streams
Java 8 streams
 
Ppt presentation of queues
Ppt presentation of queuesPpt presentation of queues
Ppt presentation of queues
 
Introduction to c part -3
Introduction to c   part -3Introduction to c   part -3
Introduction to c part -3
 
Dynamic Memory Allocation(DMA)
Dynamic Memory Allocation(DMA)Dynamic Memory Allocation(DMA)
Dynamic Memory Allocation(DMA)
 
Data structure stack&queue basics
Data structure stack&queue   basicsData structure stack&queue   basics
Data structure stack&queue basics
 
Java.util.concurrent.concurrent hashmap
Java.util.concurrent.concurrent hashmapJava.util.concurrent.concurrent hashmap
Java.util.concurrent.concurrent hashmap
 
Matlab HTI summer training course Lecture3
Matlab HTI summer training course Lecture3Matlab HTI summer training course Lecture3
Matlab HTI summer training course Lecture3
 
Matlab introduction
Matlab introductionMatlab introduction
Matlab introduction
 
Stack & heap
Stack & heap Stack & heap
Stack & heap
 
ACM init()- Day 4
ACM init()- Day 4ACM init()- Day 4
ACM init()- Day 4
 
PRAM algorithms from deepika
PRAM algorithms from deepikaPRAM algorithms from deepika
PRAM algorithms from deepika
 

Viewers also liked

Arany kezek(36) ani (nx power lite)
Arany kezek(36) ani (nx power lite)Arany kezek(36) ani (nx power lite)
Arany kezek(36) ani (nx power lite)
VarganeAnny
 
心肌梗塞急救法
心肌梗塞急救法心肌梗塞急救法
心肌梗塞急救法
chengchunhao
 
Tour Ancient Mexico!
Tour Ancient Mexico!Tour Ancient Mexico!
Tour Ancient Mexico!
LibraryLeroy
 
Minden, ami szép(5) (nx power lite)+ani
Minden, ami szép(5) (nx power lite)+aniMinden, ami szép(5) (nx power lite)+ani
Minden, ami szép(5) (nx power lite)+ani
VarganeAnny
 
Protests past and present
Protests past and presentProtests past and present
Protests past and present
vanessaftok
 
Catalog dental-general
Catalog dental-generalCatalog dental-general
Catalog dental-general
MIGUEL CHAVEZ
 

Viewers also liked (20)

My englishfriends cas
My englishfriends casMy englishfriends cas
My englishfriends cas
 
Sant jordi
Sant jordiSant jordi
Sant jordi
 
Start-up Battlefield in the Middle East
Start-up Battlefield in the Middle EastStart-up Battlefield in the Middle East
Start-up Battlefield in the Middle East
 
Technology[1]
Technology[1]Technology[1]
Technology[1]
 
Arany kezek(36) ani (nx power lite)
Arany kezek(36) ani (nx power lite)Arany kezek(36) ani (nx power lite)
Arany kezek(36) ani (nx power lite)
 
心肌梗塞急救法
心肌梗塞急救法心肌梗塞急救法
心肌梗塞急救法
 
EME2040 Project VI, Part III
EME2040 Project VI, Part IIIEME2040 Project VI, Part III
EME2040 Project VI, Part III
 
List Growth In the Shadow of CASL (Canada Anti-Spam Law)
List Growth In the Shadow of CASL (Canada Anti-Spam Law)List Growth In the Shadow of CASL (Canada Anti-Spam Law)
List Growth In the Shadow of CASL (Canada Anti-Spam Law)
 
Parenting U: Toddler Behavior
Parenting U: Toddler BehaviorParenting U: Toddler Behavior
Parenting U: Toddler Behavior
 
Ipad Usability 2nd Edition
Ipad Usability 2nd EditionIpad Usability 2nd Edition
Ipad Usability 2nd Edition
 
Tour Ancient Mexico!
Tour Ancient Mexico!Tour Ancient Mexico!
Tour Ancient Mexico!
 
ICE President Apprentices 2006-07
ICE President Apprentices 2006-07ICE President Apprentices 2006-07
ICE President Apprentices 2006-07
 
Conductedwork
ConductedworkConductedwork
Conductedwork
 
Minden, ami szép(5) (nx power lite)+ani
Minden, ami szép(5) (nx power lite)+aniMinden, ami szép(5) (nx power lite)+ani
Minden, ami szép(5) (nx power lite)+ani
 
How to provide 24/7 support in a 9-5 work day: the benefit of e-mental health...
How to provide 24/7 support in a 9-5 work day: the benefit of e-mental health...How to provide 24/7 support in a 9-5 work day: the benefit of e-mental health...
How to provide 24/7 support in a 9-5 work day: the benefit of e-mental health...
 
Protests past and present
Protests past and presentProtests past and present
Protests past and present
 
17 dsp dunia muzik tahun 3 5 feb 2013
17 dsp dunia muzik tahun 3   5 feb 201317 dsp dunia muzik tahun 3   5 feb 2013
17 dsp dunia muzik tahun 3 5 feb 2013
 
Catalog dental-general
Catalog dental-generalCatalog dental-general
Catalog dental-general
 
Parenting U: Child Nutrition - Recipes
Parenting U: Child Nutrition - RecipesParenting U: Child Nutrition - Recipes
Parenting U: Child Nutrition - Recipes
 
差異是祝福
差異是祝福差異是祝福
差異是祝福
 

Similar to Dot net parallelism and multicore computing

C# Parallel programming
C# Parallel programmingC# Parallel programming
C# Parallel programming
Umeshwaran V
 
Distributed Radar Tracking Simulation Project
Distributed Radar Tracking Simulation ProjectDistributed Radar Tracking Simulation Project
Distributed Radar Tracking Simulation Project
Assignmentpedia
 

Similar to Dot net parallelism and multicore computing (20)

Migration To Multi Core - Parallel Programming Models
Migration To Multi Core - Parallel Programming ModelsMigration To Multi Core - Parallel Programming Models
Migration To Multi Core - Parallel Programming Models
 
C# Parallel programming
C# Parallel programmingC# Parallel programming
C# Parallel programming
 
IRJET- Latin Square Computation of Order-3 using Open CL
IRJET- Latin Square Computation of Order-3 using Open CLIRJET- Latin Square Computation of Order-3 using Open CL
IRJET- Latin Square Computation of Order-3 using Open CL
 
Parallel Programming With Dot Net
Parallel Programming With Dot NetParallel Programming With Dot Net
Parallel Programming With Dot Net
 
Code Tuning
Code TuningCode Tuning
Code Tuning
 
Parallel computing and its applications
Parallel computing and its applicationsParallel computing and its applications
Parallel computing and its applications
 
Modern processors
Modern processorsModern processors
Modern processors
 
Parallel Programming
Parallel ProgrammingParallel Programming
Parallel Programming
 
Parallel Computing
Parallel ComputingParallel Computing
Parallel Computing
 
Complier design
Complier design Complier design
Complier design
 
Matlab ppt
Matlab pptMatlab ppt
Matlab ppt
 
Lecture18-19 (1).ppt
Lecture18-19 (1).pptLecture18-19 (1).ppt
Lecture18-19 (1).ppt
 
Performance Analysis of Parallel Algorithms on Multi-core System using OpenMP
Performance Analysis of Parallel Algorithms on Multi-core System using OpenMP Performance Analysis of Parallel Algorithms on Multi-core System using OpenMP
Performance Analysis of Parallel Algorithms on Multi-core System using OpenMP
 
Lect 3-4 Zaheer Abbas
Lect 3-4 Zaheer AbbasLect 3-4 Zaheer Abbas
Lect 3-4 Zaheer Abbas
 
Concurrency and Parallelism, Asynchronous Programming, Network Programming
Concurrency and Parallelism, Asynchronous Programming, Network ProgrammingConcurrency and Parallelism, Asynchronous Programming, Network Programming
Concurrency and Parallelism, Asynchronous Programming, Network Programming
 
Unit2-Part2-MultithreadAlgos.pptx.pdf
Unit2-Part2-MultithreadAlgos.pptx.pdfUnit2-Part2-MultithreadAlgos.pptx.pdf
Unit2-Part2-MultithreadAlgos.pptx.pdf
 
parellel computing
parellel computingparellel computing
parellel computing
 
What is new in java 8 concurrency
What is new in java 8 concurrencyWhat is new in java 8 concurrency
What is new in java 8 concurrency
 
Machine Learning Guide maXbox Starter62
Machine Learning Guide maXbox Starter62Machine Learning Guide maXbox Starter62
Machine Learning Guide maXbox Starter62
 
Distributed Radar Tracking Simulation Project
Distributed Radar Tracking Simulation ProjectDistributed Radar Tracking Simulation Project
Distributed Radar Tracking Simulation Project
 

Recently uploaded

Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Peter Udo Diehl
 

Recently uploaded (20)

Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1
 
Server-Driven User Interface (SDUI) at Priceline
Server-Driven User Interface (SDUI) at PricelineServer-Driven User Interface (SDUI) at Priceline
Server-Driven User Interface (SDUI) at Priceline
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
The architecture of Generative AI for enterprises.pdf
The architecture of Generative AI for enterprises.pdfThe architecture of Generative AI for enterprises.pdf
The architecture of Generative AI for enterprises.pdf
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Enterprise Security Monitoring, And Log Management.
Enterprise Security Monitoring, And Log Management.Enterprise Security Monitoring, And Log Management.
Enterprise Security Monitoring, And Log Management.
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdf
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 

Dot net parallelism and multicore computing

  • 1. DOT NET PARALLELISM & MULTICORE COMPUTING BY ARAVINDHAN G OMNIEXTRACT TEAM GENESIS GROUP
  • 2. Why parallelism? What is parallelism? Types of parallelism in C# Data Parallelism Parallel Loops Task Parallelism 2 AGENDA
  • 4.  Don’t expect your sequential program to run faster on new processors.  Still, processor technology advances  BUT the focus now is on multiple cores per chip  Today’s desktops typically have 4 cores  The multi-core revolution puts pressure on software developers to use parallelism if they want to benefit from future hardware improvements 4 The Free Lunch is over
  • 5.  Parallelism means that a programming task can be split into parts that can be run on several networked processors or computers.  Parallel computing is a form of computation in which many calculations are carried out simultaneously, operating on the principle that large problems can often be divided into smaller ones, which are then solved concurrently ("in parallel"). 5 What is parallelism?
  • 6. C# supports two main models of parallelism: • Data parallelism: where an operation is applied to each element in a collection. • Task parallelism: where independent computations are executed in parallel. 6 Types of Parallelism in C#
  • 7. A sequential for loop in C#: int n = ... for (int i = 0; i<=n; i++) { // ... } A parallel for loop in C#: int n = ... Parallel.For(0, n, i => { // ... }); 7 Parallel Loops in C#
  • 8.  The language construct for is translated into a (higher-order) function Parallel.For.  The argument to Parallel.For is an anonymous method, specifying the code to be performed in each loop iteration.  The arguments to this anonymous method are the start value, the end value and the iteration variable. 8 Parallel Loops in C#
  • 9. We can limit the degree of parallelism like this: var options = new ParallelOptions() { MaxDegreeOfParallelism = 2 }; Parallel.For(0, n, options, i => { fibs[i] = Fib(i); }); 9 A Simple Example
  • 10.  Parallel loops have two ways to break or stop a loop instead of just one.  Parallel break, loopState.Break(), allows all steps with indices lower than the break index to run before terminating the loop.  Parallel stop, loopState.Stop(), terminates the loop without allowing any new steps to begin. 10 Terminating a Parallel Loop
  • 11.  The parallel aggregate pattern combines data parallelism over a collection, with the aggregation of the result values to an overall result.  It is parameterized both over the operation on each element as well as the combination (aggregation) of the partial results to an overall results. An Example of Parallel Aggregates: var options = new ParallelOptions() { MaxDegreeOfParallelism = k}; Parallel.ForEach(seq /* sequence */, options, () => 0, // The local initial partial result // The loop body }); 11 Parallel Aggregates
  • 12.  When independent computations are started in different tasks, we use a model of task parallelism.  This model is more general than data parallelism, but requires more detailed control of synchronization and communication.  The most basic construct for task parallelism is: Parallel.Invoke(DoLeft, DoRight);  It executes the methods DoLeft and DoRight in parallel, and waits for both of them to finish. 12 Task Parallelism in C#
  • 13. The following code sorts 2 lists in parallel, providing a comparison operation as an argument: Parallel.Invoke( // generate two parallel threads () => ic1.Sort(cmp_int_lt), () => ic2.Sort(cmp_int_gt)); 13 Example of Task Parallelism
  • 14.  The implementation of Invoke uses the more basic constructs StartNew, for starting a computation; Wait, WaitAll, WaitAny, for synchronising several computations.  Any shared data structure needs to be protected with locks, semaphores or such.  Programming on this level is similar to explicitly managing threads: it can be more efficient it is error-prone. 14 Implementation of Task Parallelism
  • 15. static void SequentialQuickSort(int[] array, int from, int to) { if (to - from <= Threshold) { InsertionSort(array, from, to); } else { int pivot = from + (to - from) / 2; pivot = Partition(array, from, to, pivot); SequentialQuickSort(array, from, pivot - 1); SequentialQuickSort(array, pivot + 1, to); } } 15 Example: Sequential Code
  • 16. static void ParallelQuickSort(int[] array, int from, int to, int depthRemaining) { if (to - from <= Threshold) { InsertionSort(array, from, to); } else { int pivot = from + (to - from) / 2; pivot = Partition(array, from, to, pivot); if (depthRemaining > 0) { Parallel.Invoke( () => ParallelQuickSort(array, from, pivot - 1, depthRemaining - 1), () => ParallelQuickSort(array, pivot + 1, to, depthRemaining - 1)); } else { ParallelQuickSort(array, from, pivot - 1, 0); ParallelQuickSort(array, pivot + 1, to, 0); } } } 16 Example: Parallel Code
  • 17.  The preferred, high-level way of coding parallel computation in C# is through parallel patterns, an instance of design patterns.  Parallel patterns capture common patterns of parallel computation.  Two main classes of parallelism exist: Data parallelism, which is implemented through parallel For/Foreach loops. Task parallelism, which is implemented through parallel method invocation.  Tuning the parallel performance often requires code restructuring. 17 Summary