SlideShare a Scribd company logo
1 of 19
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

“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
Muhammad Subhan
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
FIDO Alliance
 

Recently uploaded (20)

ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage Intacct
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream Processing
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentation
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
Top 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development CompaniesTop 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development Companies
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptx
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 

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