SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
Sankarsan Bose
 11th July 2010
 Concurrency
 Parallel Programming
 Parallel Extensions in .NET 4.0
    Coordination Data Structures
    Task Parallelism
    Parallel Loop /Data Parallelism
    Parallel LINQ
Concurrency
• Perform multiple            Program A Program B
                    computations
  What              in overlapping time         Step 1                T
                    periods                               Step1       I
                                                Step2                 M
                                                                      E
                  • Responsive UI                         Step2
                  • Asynchronous
   Why              Processing
                                                Step3
                                                          Step3
                  • Better performance(??)



Concurrency is almost everywhere…..

OS,Database,Web Servers,GUI programs, File processing….
Program


 Concurrent    Concurrent              Concurrent
Component 1   Component 2             Component N

                        Read/Write




                     Shared Memory


Shared Memory Model of Concurrency
OS Process



  Thread 1      Thread 2                Thread N

                           Read/Write




                        Shared Memory


Operating System View
Managed Program in CLR App Domain


  Managed       Managed                          Managed
  Thread 1      Thread 2                         Thread N

                           Read/Write




                      Shared Memory


.NET Common Language Runtime View
Create ThreadStart delegate
                with the method to be
                executed
                Create instance of Thread
                class with the ThreadStart
                delegate




Start the thread execution
 Synchronization    Issues
   Race Condition
   Deadlock
 Dependency on Memory Model & Hardware Architecture
 Debugging becomes complicated
Demo1
Run

             Suspend
Thread1                 Thread1

          Suspend
Thread2                 Thread2

            Run        Single Core
Program
                        Processor
Run
      Thread1                                                     Thread1

                                                                   Core1

                                       Run
      Thread2                                                     Thread2

                                                                   Core2
      Program
                                                            Multi Core Processor


Concurrency - Perform multiple computations in overlapping     time periods
Parallel - Perform multiple computations   simultaneously
Parallel
Programming
 No more increase in clock
                                                           speed
                                                            Increase in number of
                                                           processors
                                                            Sequential programs
                                                           won’t scale
                                                            Parallel Programming
                                                                To leverage hardware
                                                               advances




Source: PDC 09 Patterns of Parallel Programming Workshop
 Decompose the program into parts e.g. methods,
statements etc.
 Identify the parts which can be executed in parallel
 Assign each part to separate tasks
 Perform the tasks in parallel on different cores
 Each task is likely to perform different actions
 Partition the input data into multiple chunks
 Perform action on each chunk in parallel on different cores
 Merge the output results
 Can be scaled up with more processors as data volume grows
To develop applications for the multicore processors we need

  Design
      Identify parallel parts
      Apply correct design patterns


  Libraries
      Sophisticated synchronization features to avoid deadlocks/race etc.
      Thread safe data structures & containers
      Language/API support for common parallel programming patterns to achieve task/data
     parallelism.

  Tools
      For   debugging parallel applications
      For   profiling parallel applications



   Parallel Extensions in .NET 4.0
Parallel
Extensions in
  .NET 4.0
Integrated                   Programming Models                                                                  Programming Models
   Tooling
                                                 PLINQ
       Parallel                               Task Parallel                                                          Parallel Pattern      Agents
      Debugger                                                                                                           Library           Library
                                                Library
    Toolwindows




                                                                                Data Structures

                                                                                                  Data Structures
                                 Concurrency Runtime                                                                 Concurrency Runtime

                                              ThreadPool
      Profiler                                                                                                                Task Scheduler
    Concurrency                              Task Scheduler
      Analysis
                                            Resource Manager
                                                                                                                             Resource Manager

                                                                 Operating System

                                                                  Threads

                                  Key:         Managed Library        Native Library                                 Tools

Source: PDC 08 Daniel Moth’s Presentation
Thread-safe collections                    Phased Operation
 ConcurrentStack<T>
 ConcurrentQueue<T>
 ConcurrentDictionary<TKey,TValue>
                                            Locks
 Work exchange
 BlockingCollection<T>
 IProducerConsumerCollection<T>


 Initialization
 LazyInit<T>
Source: PDC 08 Daniel Moth’s Presentation
Demo2
Demo3
   APIs provided under System.Threading & Sytem.Threading.Tasks
   Behind the scenes uses CLR Thread Pool
   Uses sophisticated algorithms to assign number of threads to
    maximize performance
   More programmatic control than thread or work item
       Create/Start Tasks
       Return result values from tasks
       Chain Multiple Tasks
       Nested & Child Tasks
       Exception Handling
Constructor - public Task( Action action )
Action delegate - public delegate void Action()


                                                  Lambda Expression without
                                                  input parameter and
                                                  returning nothing

                                                  Create an explicit instance of
                                                  Action delegate and pass it to
                                                  task constructor




Start the Tasks
Class: public class Task<TResult> : Task
Constructor: public Task( Func<TResult> function )
Delegate: public delegate TResult Func<out TResult>()
                                                        Lambda Expression
                                                        without input
                                                        parameter and
                                                        returning int

                                                        Create new instance
                                                        of Func delegate with
                                                        no input parameter
                                                        and returning int

                                                        We have instantiated
                                                        & started two tasks
                                                        which expected to
                                                        return integer value




The property Result stores the return value
Class: public Task ContinueWith( Action<Task> continuationAction )



                                                                           Instantiate a Task
                                                                           with Action delegate

                                                                           Create an Action
                                                                           delegate with a task
                                                                           object as input and
                                                                           returning nothing.
                                                                           Call ContinueWith
                                                                           method and pass the
                                                                           Action delegate
                                                                           created



 Start the Task.
 After this task completes it will Continue With the execution of Action
 a2 automatically
This is a lambda
                                                            expression and Task
                                                            t1 will execute this
                                                            statements
                                                            Task t11 is created
                                                            while Task T1 is
                                                            executing.
                                                            This is a Nested Task




Task t12 is created while Task T1 is executing but with
AttachedToParent option. This is a Child Task.

Child tasks are very closely synchronized with the parent
Demo4
Method : public static void Invoke( params Action[] actions )




                                                           Three Action delegates are
                                                           created



                                                           Three Action delegates will be
                                                           invoked possibly in Parallel
Demo5
Method : public static ParallelLoopResult For( int fromInclusive, int toExclusive,
Action<int> body )



                                                                             Upper & Lower
                                                                             Bounds of the For
                                                                             Loop
                                                                             Loop Counter

                                                                             Statement
                                                                             executed in the
                                                                             loop




When a For() loop has a small body, it might perform more slowly
Slower performance is caused by the overhead involved in partitioning the data and the
cost of invoking a delegate on each loop iteration.
Method : public static ParallelLoopResult ForEach<TSource>( IEnumerable<TSource>
source, Action<TSource> body )

                                                               Int Array with
                                                               values from 0 to
                                                               100000
                                                               Loop iteration
                                                               variable


                                                               Loop Body
Demo6
   Language-Integrated Query (LINQ) was introduced in the .NET
    Framework version 3.0
       Querying on any System.Collections.IEnumerable or
        System.Collections.Generic.IEnumerable data source
   Parallel LINQ (PLINQ) is a parallel implementation of the LINQ
    pattern
   PLINQ tries to make full use of all the processors on the system
   Partitions the data source into segments
   Executes the query on each segment on separate worker threads
    in parallel on multiple processors
Method : public static ParallelQuery<TSource> AsParallel<TSource>( this
IEnumerable<TSource> source )
Method : public static void ForAll<TSource>( this ParallelQuery<TSource> source,
Action<TSource> action )



                                                                          Instructs to execute
                                                                          the LINQ query in
                                                                          Parallel

                                                                          Invokes in parallel the
                                                                          specified action for
                                                                          each element in the
                                                                          source.
Demo7
   PLINQ, the goal is to maximize performance while maintaining
    correctness
   In some cases, correctness requires the order of the source
    sequence to be preserved
   Ordering can be computationally expensive
   PLINQ by default does not preserve the order of the source
    sequence
   To turn on order-preservation the AsOrdered operator is to be
    used on the source sequence
Method : public static ParallelQuery AsOrdered( this ParallelQuery source )




     Instructs to execute the LINQ query in Parallel by
     preserving order
Demo8
Thank You
http://msdn.microsoft.com/en-us/library/dd460693.aspx

  http://channel9.msdn.com/pdc2008/TL26/

   http://www.ademiller.com/blogs/tech/2009/11/pdc-patterns-
of-parallel-programming-workshop/

  Concurrent Programming on Windows by Joe Duffy
Additional
  Slides
This is like a pointer to
                                           function which
                                           accepts nothing and
                                           returns nothing

                                           Accepts delegate D as
                                           input

                                           M2 has no parameter
                                           & return value

                                           An instance of
                                           delegate D or a
                                           pointer to method
                                           M2
                                           Call to M1 with
                                           delegate instance d1
                                           as a parameter.

                                           Call to M1 with
                                           Lambda Expression

Lambda Expression is an anonymous method
(input parameters) => (statement)

Weitere ähnliche Inhalte

Was ist angesagt?

Functional programming in Scala
Functional programming in ScalaFunctional programming in Scala
Functional programming in Scaladatamantra
 
Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...
Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...
Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...Chris Fregly
 
Solve it Differently with Reactive Programming
Solve it Differently with Reactive ProgrammingSolve it Differently with Reactive Programming
Solve it Differently with Reactive ProgrammingSupun Dissanayake
 
Stream processing from single node to a cluster
Stream processing from single node to a clusterStream processing from single node to a cluster
Stream processing from single node to a clusterGal Marder
 
Distributed Model Validation with Epsilon
Distributed Model Validation with EpsilonDistributed Model Validation with Epsilon
Distributed Model Validation with EpsilonSina Madani
 
Mission planning of autonomous quadrotors
Mission planning of autonomous quadrotorsMission planning of autonomous quadrotors
Mission planning of autonomous quadrotorsIvano Malavolta
 
Braxton McKee, CEO & Founder, Ufora at MLconf NYC - 4/15/16
Braxton McKee, CEO & Founder, Ufora at MLconf NYC - 4/15/16Braxton McKee, CEO & Founder, Ufora at MLconf NYC - 4/15/16
Braxton McKee, CEO & Founder, Ufora at MLconf NYC - 4/15/16MLconf
 
Scalable Algorithm Design with MapReduce
Scalable Algorithm Design with MapReduceScalable Algorithm Design with MapReduce
Scalable Algorithm Design with MapReducePietro Michiardi
 
DIY Deep Learning with Caffe Workshop
DIY Deep Learning with Caffe WorkshopDIY Deep Learning with Caffe Workshop
DIY Deep Learning with Caffe Workshopodsc
 
Analysis Result Manager (ARM)
Analysis Result Manager (ARM)Analysis Result Manager (ARM)
Analysis Result Manager (ARM)magland
 
Distributed computing and hyper-parameter tuning with Ray
Distributed computing and hyper-parameter tuning with RayDistributed computing and hyper-parameter tuning with Ray
Distributed computing and hyper-parameter tuning with RayJan Margeta
 
Parallelization of Coupled Cluster Code with OpenMP
Parallelization of Coupled Cluster Code with OpenMPParallelization of Coupled Cluster Code with OpenMP
Parallelization of Coupled Cluster Code with OpenMPAnil Bohare
 
VaMoS 2022 - Transfer Learning across Distinct Software Systems
VaMoS 2022 - Transfer Learning across Distinct Software SystemsVaMoS 2022 - Transfer Learning across Distinct Software Systems
VaMoS 2022 - Transfer Learning across Distinct Software SystemsLuc Lesoil
 
Understanding Android Benchmarks
Understanding Android BenchmarksUnderstanding Android Benchmarks
Understanding Android BenchmarksKoan-Sin Tan
 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSkills Matter
 
Peyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_futurePeyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_futureTakayuki Muranushi
 

Was ist angesagt? (20)

Functional programming in Scala
Functional programming in ScalaFunctional programming in Scala
Functional programming in Scala
 
Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...
Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...
Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...
 
Solve it Differently with Reactive Programming
Solve it Differently with Reactive ProgrammingSolve it Differently with Reactive Programming
Solve it Differently with Reactive Programming
 
Stream processing from single node to a cluster
Stream processing from single node to a clusterStream processing from single node to a cluster
Stream processing from single node to a cluster
 
Distributed Model Validation with Epsilon
Distributed Model Validation with EpsilonDistributed Model Validation with Epsilon
Distributed Model Validation with Epsilon
 
Cluster Schedulers
Cluster SchedulersCluster Schedulers
Cluster Schedulers
 
Mission planning of autonomous quadrotors
Mission planning of autonomous quadrotorsMission planning of autonomous quadrotors
Mission planning of autonomous quadrotors
 
Braxton McKee, CEO & Founder, Ufora at MLconf NYC - 4/15/16
Braxton McKee, CEO & Founder, Ufora at MLconf NYC - 4/15/16Braxton McKee, CEO & Founder, Ufora at MLconf NYC - 4/15/16
Braxton McKee, CEO & Founder, Ufora at MLconf NYC - 4/15/16
 
Nsby examples
Nsby examplesNsby examples
Nsby examples
 
Openmp
OpenmpOpenmp
Openmp
 
Scalable Algorithm Design with MapReduce
Scalable Algorithm Design with MapReduceScalable Algorithm Design with MapReduce
Scalable Algorithm Design with MapReduce
 
DIY Deep Learning with Caffe Workshop
DIY Deep Learning with Caffe WorkshopDIY Deep Learning with Caffe Workshop
DIY Deep Learning with Caffe Workshop
 
Analysis Result Manager (ARM)
Analysis Result Manager (ARM)Analysis Result Manager (ARM)
Analysis Result Manager (ARM)
 
Distributed computing and hyper-parameter tuning with Ray
Distributed computing and hyper-parameter tuning with RayDistributed computing and hyper-parameter tuning with Ray
Distributed computing and hyper-parameter tuning with Ray
 
Parallelization of Coupled Cluster Code with OpenMP
Parallelization of Coupled Cluster Code with OpenMPParallelization of Coupled Cluster Code with OpenMP
Parallelization of Coupled Cluster Code with OpenMP
 
VaMoS 2022 - Transfer Learning across Distinct Software Systems
VaMoS 2022 - Transfer Learning across Distinct Software SystemsVaMoS 2022 - Transfer Learning across Distinct Software Systems
VaMoS 2022 - Transfer Learning across Distinct Software Systems
 
Understanding Android Benchmarks
Understanding Android BenchmarksUnderstanding Android Benchmarks
Understanding Android Benchmarks
 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelism
 
Peyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_futurePeyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_future
 
OpenMp
OpenMpOpenMp
OpenMp
 

Andere mochten auch

Perl 6 for Concurrency and Parallel Computing
Perl 6 for Concurrency and Parallel ComputingPerl 6 for Concurrency and Parallel Computing
Perl 6 for Concurrency and Parallel ComputingAndrew Shitov
 
Effective java - concurrency
Effective java - concurrencyEffective java - concurrency
Effective java - concurrencyfeng lee
 
Concurrency: Best Practices
Concurrency: Best PracticesConcurrency: Best Practices
Concurrency: Best PracticesIndicThreads
 
Windows programming
Windows programmingWindows programming
Windows programmingBapan Maity
 
Concurrency & Parallel Programming
Concurrency & Parallel ProgrammingConcurrency & Parallel Programming
Concurrency & Parallel ProgrammingRamazan AYYILDIZ
 
Network programming in java - PPT
Network programming in java - PPTNetwork programming in java - PPT
Network programming in java - PPTkamal kotecha
 
Microprocessor Week 10: Applications
Microprocessor Week 10: ApplicationsMicroprocessor Week 10: Applications
Microprocessor Week 10: ApplicationsArkhom Jodtang
 
Enterprise Management with Microsoft Technologies
Enterprise Management with Microsoft TechnologiesEnterprise Management with Microsoft Technologies
Enterprise Management with Microsoft TechnologiesAmit Gatenyo
 
Microsoft Dynamics NAV 2009 R2
Microsoft Dynamics NAV 2009 R2Microsoft Dynamics NAV 2009 R2
Microsoft Dynamics NAV 2009 R2Softera Baltic
 
LeverX - A Comprehensive Guide to SAP PLM 7.01
LeverX - A Comprehensive Guide to SAP PLM 7.01LeverX - A Comprehensive Guide to SAP PLM 7.01
LeverX - A Comprehensive Guide to SAP PLM 7.01LeverX
 
Introduction to-microprocessors
Introduction to-microprocessorsIntroduction to-microprocessors
Introduction to-microprocessorsmudulin
 
Microsoft dynamics navision 2009 r2
Microsoft dynamics navision 2009 r2Microsoft dynamics navision 2009 r2
Microsoft dynamics navision 2009 r2nikhil patel
 
Microprocessors-based systems (under graduate course) Lecture 1 of 9
Microprocessors-based systems (under graduate course) Lecture 1 of 9 Microprocessors-based systems (under graduate course) Lecture 1 of 9
Microprocessors-based systems (under graduate course) Lecture 1 of 9 Randa Elanwar
 
ECESLU Microprocessors lecture 2
ECESLU Microprocessors lecture 2ECESLU Microprocessors lecture 2
ECESLU Microprocessors lecture 2Jeffrey Des Binwag
 
ECESLU Microprocessors Lecture 3
ECESLU Microprocessors Lecture 3ECESLU Microprocessors Lecture 3
ECESLU Microprocessors Lecture 3Jeffrey Des Binwag
 
SharePoint PerformancePoint 101
SharePoint PerformancePoint 101SharePoint PerformancePoint 101
SharePoint PerformancePoint 101Matthew Carter
 

Andere mochten auch (20)

Perl 6 for Concurrency and Parallel Computing
Perl 6 for Concurrency and Parallel ComputingPerl 6 for Concurrency and Parallel Computing
Perl 6 for Concurrency and Parallel Computing
 
Basic Concepts in Wireless LAN
Basic Concepts in Wireless LANBasic Concepts in Wireless LAN
Basic Concepts in Wireless LAN
 
Effective java - concurrency
Effective java - concurrencyEffective java - concurrency
Effective java - concurrency
 
Concurrency: Best Practices
Concurrency: Best PracticesConcurrency: Best Practices
Concurrency: Best Practices
 
Windows programming
Windows programmingWindows programming
Windows programming
 
079 Network Programming
079 Network Programming079 Network Programming
079 Network Programming
 
Concurrency & Parallel Programming
Concurrency & Parallel ProgrammingConcurrency & Parallel Programming
Concurrency & Parallel Programming
 
Network programming in java - PPT
Network programming in java - PPTNetwork programming in java - PPT
Network programming in java - PPT
 
Microprocessor Week 10: Applications
Microprocessor Week 10: ApplicationsMicroprocessor Week 10: Applications
Microprocessor Week 10: Applications
 
Enterprise Management with Microsoft Technologies
Enterprise Management with Microsoft TechnologiesEnterprise Management with Microsoft Technologies
Enterprise Management with Microsoft Technologies
 
Microsoft Dynamics NAV 2009 R2
Microsoft Dynamics NAV 2009 R2Microsoft Dynamics NAV 2009 R2
Microsoft Dynamics NAV 2009 R2
 
LeverX - A Comprehensive Guide to SAP PLM 7.01
LeverX - A Comprehensive Guide to SAP PLM 7.01LeverX - A Comprehensive Guide to SAP PLM 7.01
LeverX - A Comprehensive Guide to SAP PLM 7.01
 
Cheap HPC
Cheap HPCCheap HPC
Cheap HPC
 
Introduction to-microprocessors
Introduction to-microprocessorsIntroduction to-microprocessors
Introduction to-microprocessors
 
Microsoft dynamics navision 2009 r2
Microsoft dynamics navision 2009 r2Microsoft dynamics navision 2009 r2
Microsoft dynamics navision 2009 r2
 
Microprocessors-based systems (under graduate course) Lecture 1 of 9
Microprocessors-based systems (under graduate course) Lecture 1 of 9 Microprocessors-based systems (under graduate course) Lecture 1 of 9
Microprocessors-based systems (under graduate course) Lecture 1 of 9
 
Microprocessor Systems
Microprocessor Systems Microprocessor Systems
Microprocessor Systems
 
ECESLU Microprocessors lecture 2
ECESLU Microprocessors lecture 2ECESLU Microprocessors lecture 2
ECESLU Microprocessors lecture 2
 
ECESLU Microprocessors Lecture 3
ECESLU Microprocessors Lecture 3ECESLU Microprocessors Lecture 3
ECESLU Microprocessors Lecture 3
 
SharePoint PerformancePoint 101
SharePoint PerformancePoint 101SharePoint PerformancePoint 101
SharePoint PerformancePoint 101
 

Ähnlich wie Parallel Programming in .NET

Tim - FSharp
Tim - FSharpTim - FSharp
Tim - FSharpd0nn9n
 
Overall 23 11_2007_hdp
Overall 23 11_2007_hdpOverall 23 11_2007_hdp
Overall 23 11_2007_hdpMohd Arif
 
Thinking in parallel ab tuladev
Thinking in parallel ab tuladevThinking in parallel ab tuladev
Thinking in parallel ab tuladevPavel Tsukanov
 
GPars: Groovy Parallelism for Java
GPars: Groovy Parallelism for JavaGPars: Groovy Parallelism for Java
GPars: Groovy Parallelism for JavaRussel Winder
 
(ATS3-PLAT06) Handling “Big Data” with Pipeline Pilot (MapReduce/NoSQL)
(ATS3-PLAT06) Handling “Big Data” with Pipeline Pilot (MapReduce/NoSQL)(ATS3-PLAT06) Handling “Big Data” with Pipeline Pilot (MapReduce/NoSQL)
(ATS3-PLAT06) Handling “Big Data” with Pipeline Pilot (MapReduce/NoSQL)BIOVIA
 
CH03.ppt dsqdDQWDQWDQWDWDQDQDQWDQQDDQDWDQWQ
CH03.ppt dsqdDQWDQWDQWDWDQDQDQWDQQDDQDWDQWQCH03.ppt dsqdDQWDQWDQWDWDQDQDQWDQQDDQDWDQWQ
CH03.ppt dsqdDQWDQWDQWDWDQDQDQWDQQDDQDWDQWQSandeepNayal1
 
Multi core programming 1
Multi core programming 1Multi core programming 1
Multi core programming 1Robin Aggarwal
 
VTU 6th Sem Elective CSE - Module 3 cloud computing
VTU 6th Sem Elective CSE - Module 3 cloud computingVTU 6th Sem Elective CSE - Module 3 cloud computing
VTU 6th Sem Elective CSE - Module 3 cloud computingSachin Gowda
 
Concurrency Programming in Java - 01 - Introduction to Concurrency Programming
Concurrency Programming in Java - 01 - Introduction to Concurrency ProgrammingConcurrency Programming in Java - 01 - Introduction to Concurrency Programming
Concurrency Programming in Java - 01 - Introduction to Concurrency ProgrammingSachintha Gunasena
 
MEW22 22nd Machine Evaluation Workshop Microsoft
MEW22 22nd Machine Evaluation Workshop MicrosoftMEW22 22nd Machine Evaluation Workshop Microsoft
MEW22 22nd Machine Evaluation Workshop MicrosoftLee Stott
 
WORKS 11 Presentation
WORKS 11 PresentationWORKS 11 Presentation
WORKS 11 Presentationdgarijo
 
ACM Sunnyvale Meetup.pdf
ACM Sunnyvale Meetup.pdfACM Sunnyvale Meetup.pdf
ACM Sunnyvale Meetup.pdfAnyscale
 
Overview Of .Net 4.0 Sanjay Vyas
Overview Of .Net 4.0   Sanjay VyasOverview Of .Net 4.0   Sanjay Vyas
Overview Of .Net 4.0 Sanjay Vyasrsnarayanan
 
Profiling Multicore Systems to Maximize Core Utilization
Profiling Multicore Systems to Maximize Core Utilization Profiling Multicore Systems to Maximize Core Utilization
Profiling Multicore Systems to Maximize Core Utilization mentoresd
 
Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...
Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...
Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...manssandstrom
 
Reverse Engineering of Software Architecture
Reverse Engineering of Software ArchitectureReverse Engineering of Software Architecture
Reverse Engineering of Software ArchitectureDharmalingam Ganesan
 
Data Parallel and Object Oriented Model
Data Parallel and Object Oriented ModelData Parallel and Object Oriented Model
Data Parallel and Object Oriented ModelNikhil Sharma
 

Ähnlich wie Parallel Programming in .NET (20)

Tim - FSharp
Tim - FSharpTim - FSharp
Tim - FSharp
 
Overall 23 11_2007_hdp
Overall 23 11_2007_hdpOverall 23 11_2007_hdp
Overall 23 11_2007_hdp
 
Thinking in parallel ab tuladev
Thinking in parallel ab tuladevThinking in parallel ab tuladev
Thinking in parallel ab tuladev
 
GPars: Groovy Parallelism for Java
GPars: Groovy Parallelism for JavaGPars: Groovy Parallelism for Java
GPars: Groovy Parallelism for Java
 
(ATS3-PLAT06) Handling “Big Data” with Pipeline Pilot (MapReduce/NoSQL)
(ATS3-PLAT06) Handling “Big Data” with Pipeline Pilot (MapReduce/NoSQL)(ATS3-PLAT06) Handling “Big Data” with Pipeline Pilot (MapReduce/NoSQL)
(ATS3-PLAT06) Handling “Big Data” with Pipeline Pilot (MapReduce/NoSQL)
 
CH03.ppt dsqdDQWDQWDQWDWDQDQDQWDQQDDQDWDQWQ
CH03.ppt dsqdDQWDQWDQWDWDQDQDQWDQQDDQDWDQWQCH03.ppt dsqdDQWDQWDQWDWDQDQDQWDQQDDQDWDQWQ
CH03.ppt dsqdDQWDQWDQWDWDQDQDQWDQQDDQDWDQWQ
 
LINQ/PLINQ
LINQ/PLINQLINQ/PLINQ
LINQ/PLINQ
 
Multi core programming 1
Multi core programming 1Multi core programming 1
Multi core programming 1
 
VTU 6th Sem Elective CSE - Module 3 cloud computing
VTU 6th Sem Elective CSE - Module 3 cloud computingVTU 6th Sem Elective CSE - Module 3 cloud computing
VTU 6th Sem Elective CSE - Module 3 cloud computing
 
Concurrency Programming in Java - 01 - Introduction to Concurrency Programming
Concurrency Programming in Java - 01 - Introduction to Concurrency ProgrammingConcurrency Programming in Java - 01 - Introduction to Concurrency Programming
Concurrency Programming in Java - 01 - Introduction to Concurrency Programming
 
MEW22 22nd Machine Evaluation Workshop Microsoft
MEW22 22nd Machine Evaluation Workshop MicrosoftMEW22 22nd Machine Evaluation Workshop Microsoft
MEW22 22nd Machine Evaluation Workshop Microsoft
 
WORKS 11 Presentation
WORKS 11 PresentationWORKS 11 Presentation
WORKS 11 Presentation
 
ACM Sunnyvale Meetup.pdf
ACM Sunnyvale Meetup.pdfACM Sunnyvale Meetup.pdf
ACM Sunnyvale Meetup.pdf
 
Overview Of .Net 4.0 Sanjay Vyas
Overview Of .Net 4.0   Sanjay VyasOverview Of .Net 4.0   Sanjay Vyas
Overview Of .Net 4.0 Sanjay Vyas
 
Profiling Multicore Systems to Maximize Core Utilization
Profiling Multicore Systems to Maximize Core Utilization Profiling Multicore Systems to Maximize Core Utilization
Profiling Multicore Systems to Maximize Core Utilization
 
Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...
Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...
Att lyckas med integration av arbetet från flera scrum team - Christophe Acho...
 
Java1
Java1Java1
Java1
 
Java
Java Java
Java
 
Reverse Engineering of Software Architecture
Reverse Engineering of Software ArchitectureReverse Engineering of Software Architecture
Reverse Engineering of Software Architecture
 
Data Parallel and Object Oriented Model
Data Parallel and Object Oriented ModelData Parallel and Object Oriented Model
Data Parallel and Object Oriented Model
 

Kürzlich hochgeladen

Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 

Kürzlich hochgeladen (20)

Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 

Parallel Programming in .NET

  • 2.  Concurrency  Parallel Programming  Parallel Extensions in .NET 4.0  Coordination Data Structures  Task Parallelism  Parallel Loop /Data Parallelism  Parallel LINQ
  • 4. • Perform multiple Program A Program B computations What in overlapping time Step 1 T periods Step1 I Step2 M E • Responsive UI Step2 • Asynchronous Why Processing Step3 Step3 • Better performance(??) Concurrency is almost everywhere….. OS,Database,Web Servers,GUI programs, File processing….
  • 5. Program Concurrent Concurrent Concurrent Component 1 Component 2 Component N Read/Write Shared Memory Shared Memory Model of Concurrency
  • 6. OS Process Thread 1 Thread 2 Thread N Read/Write Shared Memory Operating System View
  • 7. Managed Program in CLR App Domain Managed Managed Managed Thread 1 Thread 2 Thread N Read/Write Shared Memory .NET Common Language Runtime View
  • 8. Create ThreadStart delegate with the method to be executed Create instance of Thread class with the ThreadStart delegate Start the thread execution
  • 9.  Synchronization Issues  Race Condition  Deadlock  Dependency on Memory Model & Hardware Architecture  Debugging becomes complicated
  • 10. Demo1
  • 11. Run Suspend Thread1 Thread1 Suspend Thread2 Thread2 Run Single Core Program Processor
  • 12. Run Thread1 Thread1 Core1 Run Thread2 Thread2 Core2 Program Multi Core Processor Concurrency - Perform multiple computations in overlapping time periods Parallel - Perform multiple computations simultaneously
  • 14.  No more increase in clock speed  Increase in number of processors  Sequential programs won’t scale  Parallel Programming  To leverage hardware advances Source: PDC 09 Patterns of Parallel Programming Workshop
  • 15.  Decompose the program into parts e.g. methods, statements etc.  Identify the parts which can be executed in parallel  Assign each part to separate tasks  Perform the tasks in parallel on different cores  Each task is likely to perform different actions
  • 16.  Partition the input data into multiple chunks  Perform action on each chunk in parallel on different cores  Merge the output results  Can be scaled up with more processors as data volume grows
  • 17. To develop applications for the multicore processors we need  Design  Identify parallel parts  Apply correct design patterns  Libraries  Sophisticated synchronization features to avoid deadlocks/race etc.  Thread safe data structures & containers  Language/API support for common parallel programming patterns to achieve task/data parallelism.  Tools  For debugging parallel applications  For profiling parallel applications Parallel Extensions in .NET 4.0
  • 19. Integrated Programming Models Programming Models Tooling PLINQ Parallel Task Parallel Parallel Pattern Agents Debugger Library Library Library Toolwindows Data Structures Data Structures Concurrency Runtime Concurrency Runtime ThreadPool Profiler Task Scheduler Concurrency Task Scheduler Analysis Resource Manager Resource Manager Operating System Threads Key: Managed Library Native Library Tools Source: PDC 08 Daniel Moth’s Presentation
  • 20. Thread-safe collections Phased Operation ConcurrentStack<T> ConcurrentQueue<T> ConcurrentDictionary<TKey,TValue> Locks Work exchange BlockingCollection<T> IProducerConsumerCollection<T> Initialization LazyInit<T> Source: PDC 08 Daniel Moth’s Presentation
  • 21. Demo2
  • 22. Demo3
  • 23. APIs provided under System.Threading & Sytem.Threading.Tasks  Behind the scenes uses CLR Thread Pool  Uses sophisticated algorithms to assign number of threads to maximize performance  More programmatic control than thread or work item  Create/Start Tasks  Return result values from tasks  Chain Multiple Tasks  Nested & Child Tasks  Exception Handling
  • 24. Constructor - public Task( Action action ) Action delegate - public delegate void Action() Lambda Expression without input parameter and returning nothing Create an explicit instance of Action delegate and pass it to task constructor Start the Tasks
  • 25. Class: public class Task<TResult> : Task Constructor: public Task( Func<TResult> function ) Delegate: public delegate TResult Func<out TResult>() Lambda Expression without input parameter and returning int Create new instance of Func delegate with no input parameter and returning int We have instantiated & started two tasks which expected to return integer value The property Result stores the return value
  • 26. Class: public Task ContinueWith( Action<Task> continuationAction ) Instantiate a Task with Action delegate Create an Action delegate with a task object as input and returning nothing. Call ContinueWith method and pass the Action delegate created Start the Task. After this task completes it will Continue With the execution of Action a2 automatically
  • 27. This is a lambda expression and Task t1 will execute this statements Task t11 is created while Task T1 is executing. This is a Nested Task Task t12 is created while Task T1 is executing but with AttachedToParent option. This is a Child Task. Child tasks are very closely synchronized with the parent
  • 28. Demo4
  • 29. Method : public static void Invoke( params Action[] actions ) Three Action delegates are created Three Action delegates will be invoked possibly in Parallel
  • 30. Demo5
  • 31. Method : public static ParallelLoopResult For( int fromInclusive, int toExclusive, Action<int> body ) Upper & Lower Bounds of the For Loop Loop Counter Statement executed in the loop When a For() loop has a small body, it might perform more slowly Slower performance is caused by the overhead involved in partitioning the data and the cost of invoking a delegate on each loop iteration.
  • 32. Method : public static ParallelLoopResult ForEach<TSource>( IEnumerable<TSource> source, Action<TSource> body ) Int Array with values from 0 to 100000 Loop iteration variable Loop Body
  • 33. Demo6
  • 34. Language-Integrated Query (LINQ) was introduced in the .NET Framework version 3.0  Querying on any System.Collections.IEnumerable or System.Collections.Generic.IEnumerable data source  Parallel LINQ (PLINQ) is a parallel implementation of the LINQ pattern  PLINQ tries to make full use of all the processors on the system  Partitions the data source into segments  Executes the query on each segment on separate worker threads in parallel on multiple processors
  • 35. Method : public static ParallelQuery<TSource> AsParallel<TSource>( this IEnumerable<TSource> source ) Method : public static void ForAll<TSource>( this ParallelQuery<TSource> source, Action<TSource> action ) Instructs to execute the LINQ query in Parallel Invokes in parallel the specified action for each element in the source.
  • 36. Demo7
  • 37. PLINQ, the goal is to maximize performance while maintaining correctness  In some cases, correctness requires the order of the source sequence to be preserved  Ordering can be computationally expensive  PLINQ by default does not preserve the order of the source sequence  To turn on order-preservation the AsOrdered operator is to be used on the source sequence
  • 38. Method : public static ParallelQuery AsOrdered( this ParallelQuery source ) Instructs to execute the LINQ query in Parallel by preserving order
  • 39. Demo8
  • 41. http://msdn.microsoft.com/en-us/library/dd460693.aspx http://channel9.msdn.com/pdc2008/TL26/ http://www.ademiller.com/blogs/tech/2009/11/pdc-patterns- of-parallel-programming-workshop/ Concurrent Programming on Windows by Joe Duffy
  • 43. This is like a pointer to function which accepts nothing and returns nothing Accepts delegate D as input M2 has no parameter & return value An instance of delegate D or a pointer to method M2 Call to M1 with delegate instance d1 as a parameter. Call to M1 with Lambda Expression Lambda Expression is an anonymous method (input parameters) => (statement)