SlideShare une entreprise Scribd logo
1  sur  17
PARALLELISM В .NET 4.0ИVISUAL STUDIO 2010 Калита Роман TaskManagementSoft
Нововведения в Parallel Computing Managed Languages Tools Axum Visual F# Visual Studio 2010 Доклад Parallel Debugger Windows Native Libraries Managed Libraries DryadLINQ Rx Async AgentsLibrary Parallel Pattern Library Profiler Concurrency Analysis Parallel LINQ Доклад Task ParallelLibrary Data Structures Data Structures Microsoft Research Native Concurrency Runtime Task Scheduler Race Detection Managed Concurrency Runtime Resource Manager ThreadPool Fuzzing Operating System HPC Server UMS Threads Threads Windows 7 / Server 2008 R2 Research / Incubation Visual Studio 2010 / .NET 4 Легенда:
Демо - Parallel Sudoku
Накладые расходы при паралелизме Необходимо деление операций Выполнения потоков вызывает лишние накладные расходы Чем больше потоков тем больше лишних расходов Для быстрого запуска/выполнения потоков необходимо уменьшить накладные расходы связанные с этим Overhead Overhead Overhead Overhead Overhead Overhead Work Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead
ThreadPoolв .NET 3.5 Item 5 Global Queue Item 6 Рабочий поток 1 Рабочий поток N Item 3.1 … Item 3 Item 4 Program Thread Item 7 ,[object Object]
И возникает все больше и больше блокировок,[object Object]
Hill-Climbing – определение оптимального числа потоков в пуле в зависимости от нагрузки на CPU,[object Object]
Демо – Task, Concurrent collection
Новые примитивы синхронизации Использованы при разработке PLINQ и TPL Для того чтобы решать большинство задач в многопоточности Thread-safe, scalable collections IProducerConsumerCollection<T> ConcurrentQueue<T> ConcurrentStack<T> ConcurrentBag<T> ConcurrentDictionary<TKey,TValue> Phases and work exchange Barrier  BlockingCollection<T> CountdownEvent Partitioning {Orderable}Partitioner<T> Partitioner.Create Exception handling AggregateException Initialization Lazy<T> LazyInitializer.EnsureInitialized<T> ThreadLocal<T> Locks ManualResetEventSlim SemaphoreSlim SpinLock SpinWait Cancellation CancellationToken{Source}
Распараллеливаем циклы Control flow is a primary source of work Распаралеливаем если итерации независимы «Синхронное» поведение, поток выполнения не пройдет пока цикл не выполнится Возможности Cancelation, breaking, task-local state, scheduling, degree of parallelism Поддержка профайлера Visual Studio 2010 (как у PLINQ) foreach(var item in data)  {    work(item); } for (int i = 0; i < n; i++)  {    work(i); } StatementA(); StatementB; StatementC(); Parallel.ForEach(data, item=> {    work(item); }); Parallel.For(0, n, i=>  {    work(i); }); Parallel.Invoke(    () => StatementA(),     () => StatementB,     () => StatementC());
Легко с LINQ  на PLINQ LINQ to Objects: int[] output = arr     .Select(x => Foo(x))     .ToArray(); ,[object Object],int[] output = arr.AsParallel()     .Select(x => Foo(x))     .ToArray();
Легко с LINQ  на PLINQ PLINQ может выполнить все LINQ запросы Простые запросы – проще выполнить Разбивайте сложные запросы на более простые, так чтобы только та часть которую нужно распралелить была PLINQ: src.Select(x => Foo(x))         .TakeWhile(x => Filter(x))         .AsParallel()         .Select(x => Bar(x))         .ToArray();
Демо – PLINQ
Отлаживаем параллелизм Concurrency Profiler Parallel Debugger Parallel tasks Parallel stack
Демо – Profiler views, debugger tools
Cсылки и источники DevCenter http://msdn.com/concurrency Исходные коды примеров http://code.msdn.microsoft.com/ParExtExamples Блоги http://blogs.msdn.com/pfxteam Parallel stack Доклады, видео http://channel9.msdn.com/learn http://microsoftpdc.com/
Спасибо за внимание:)

Contenu connexe

Similaire à Parallelism в .net 4 и vs2010

Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0akrakovetsky
 
IOP202 DevCon 2012 Apache Lucene in Windows Azure
IOP202 DevCon 2012 Apache Lucene in Windows AzureIOP202 DevCon 2012 Apache Lucene in Windows Azure
IOP202 DevCon 2012 Apache Lucene in Windows AzureVadim Novitskiy
 
Scala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentScala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentAnton Kirillov
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй этоRoman Dvornov
 
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человекаNETFest
 
Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0matroskin1980
 
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...Герман Криммель
 
Электронные рельсы в облаках. Oracle Public Cloud для разработчиков
Электронные рельсы в облаках. Oracle Public Cloud для разработчиковЭлектронные рельсы в облаках. Oracle Public Cloud для разработчиков
Электронные рельсы в облаках. Oracle Public Cloud для разработчиковДенис Евдокимов
 
Аспектно-ориентированное программирование в распределенных системах для java ...
Аспектно-ориентированное программирование в распределенных системах для java ...Аспектно-ориентированное программирование в распределенных системах для java ...
Аспектно-ориентированное программирование в распределенных системах для java ...Igor Suhorukov
 
Видеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложенииВидеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложенииVoximplant
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012InTRUEdeR
 
C# Desktop. Занятие 16.
C# Desktop. Занятие 16.C# Desktop. Занятие 16.
C# Desktop. Занятие 16.Igor Shkulipa
 
Rich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend FrameworkRich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend FrameworkGeorgy Turevich
 
Workflow Foundation
Workflow FoundationWorkflow Foundation
Workflow FoundationGetDev.NET
 
Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Alexander Babich
 
C# 5.0. Взгляд в будущее
C# 5.0. Взгляд в будущееC# 5.0. Взгляд в будущее
C# 5.0. Взгляд в будущееGetDev.NET
 
анализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестированияанализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестированияRuslan Shevchenko
 

Similaire à Parallelism в .net 4 и vs2010 (20)

Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0
 
IOP202 DevCon 2012 Apache Lucene in Windows Azure
IOP202 DevCon 2012 Apache Lucene in Windows AzureIOP202 DevCon 2012 Apache Lucene in Windows Azure
IOP202 DevCon 2012 Apache Lucene in Windows Azure
 
Telerik Web aii
Telerik Web aiiTelerik Web aii
Telerik Web aii
 
Scala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentScala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application Development
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
 
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
 
Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0
 
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
 
DevOps для 1С
DevOps для 1СDevOps для 1С
DevOps для 1С
 
Электронные рельсы в облаках. Oracle Public Cloud для разработчиков
Электронные рельсы в облаках. Oracle Public Cloud для разработчиковЭлектронные рельсы в облаках. Oracle Public Cloud для разработчиков
Электронные рельсы в облаках. Oracle Public Cloud для разработчиков
 
Аспектно-ориентированное программирование в распределенных системах для java ...
Аспектно-ориентированное программирование в распределенных системах для java ...Аспектно-ориентированное программирование в распределенных системах для java ...
Аспектно-ориентированное программирование в распределенных системах для java ...
 
Видеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложенииВидеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложении
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012
 
C# Desktop. Занятие 16.
C# Desktop. Занятие 16.C# Desktop. Занятие 16.
C# Desktop. Занятие 16.
 
Rich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend FrameworkRich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend Framework
 
Workflow Foundation
Workflow FoundationWorkflow Foundation
Workflow Foundation
 
Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)
 
C# 5.0. Взгляд в будущее
C# 5.0. Взгляд в будущееC# 5.0. Взгляд в будущее
C# 5.0. Взгляд в будущее
 
анализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестированияанализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестирования
 
Aspect Oriented Approach
Aspect Oriented ApproachAspect Oriented Approach
Aspect Oriented Approach
 

Plus de Roman Kalita

статические анализаторы кода за и против
статические анализаторы кода  за и противстатические анализаторы кода  за и против
статические анализаторы кода за и противRoman Kalita
 
Качество кода. NDepend
Качество кода. NDependКачество кода. NDepend
Качество кода. NDependRoman Kalita
 
Internet explorer 9 для разработчиков
Internet explorer 9 для разработчиковInternet explorer 9 для разработчиков
Internet explorer 9 для разработчиковRoman Kalita
 
Введение в Share point2010, ppt
Введение в Share point2010, pptВведение в Share point2010, ppt
Введение в Share point2010, pptRoman Kalita
 
Windows phone 7 series, ppt
Windows phone 7 series, pptWindows phone 7 series, ppt
Windows phone 7 series, pptRoman Kalita
 
Введение в SharePoint 2010
Введение в SharePoint 2010Введение в SharePoint 2010
Введение в SharePoint 2010Roman Kalita
 
Windows phone 7 series
Windows phone 7 seriesWindows phone 7 series
Windows phone 7 seriesRoman Kalita
 
Dependency injection на примере unity и n inject
Dependency injection на примере unity и n injectDependency injection на примере unity и n inject
Dependency injection на примере unity и n injectRoman Kalita
 

Plus de Roman Kalita (10)

REST and Web API
REST and Web APIREST and Web API
REST and Web API
 
статические анализаторы кода за и против
статические анализаторы кода  за и противстатические анализаторы кода  за и против
статические анализаторы кода за и против
 
N depend & cql
N depend & cqlN depend & cql
N depend & cql
 
Качество кода. NDepend
Качество кода. NDependКачество кода. NDepend
Качество кода. NDepend
 
Internet explorer 9 для разработчиков
Internet explorer 9 для разработчиковInternet explorer 9 для разработчиков
Internet explorer 9 для разработчиков
 
Введение в Share point2010, ppt
Введение в Share point2010, pptВведение в Share point2010, ppt
Введение в Share point2010, ppt
 
Windows phone 7 series, ppt
Windows phone 7 series, pptWindows phone 7 series, ppt
Windows phone 7 series, ppt
 
Введение в SharePoint 2010
Введение в SharePoint 2010Введение в SharePoint 2010
Введение в SharePoint 2010
 
Windows phone 7 series
Windows phone 7 seriesWindows phone 7 series
Windows phone 7 series
 
Dependency injection на примере unity и n inject
Dependency injection на примере unity и n injectDependency injection на примере unity и n inject
Dependency injection на примере unity и n inject
 

Parallelism в .net 4 и vs2010

  • 1. PARALLELISM В .NET 4.0ИVISUAL STUDIO 2010 Калита Роман TaskManagementSoft
  • 2. Нововведения в Parallel Computing Managed Languages Tools Axum Visual F# Visual Studio 2010 Доклад Parallel Debugger Windows Native Libraries Managed Libraries DryadLINQ Rx Async AgentsLibrary Parallel Pattern Library Profiler Concurrency Analysis Parallel LINQ Доклад Task ParallelLibrary Data Structures Data Structures Microsoft Research Native Concurrency Runtime Task Scheduler Race Detection Managed Concurrency Runtime Resource Manager ThreadPool Fuzzing Operating System HPC Server UMS Threads Threads Windows 7 / Server 2008 R2 Research / Incubation Visual Studio 2010 / .NET 4 Легенда:
  • 4. Накладые расходы при паралелизме Необходимо деление операций Выполнения потоков вызывает лишние накладные расходы Чем больше потоков тем больше лишних расходов Для быстрого запуска/выполнения потоков необходимо уменьшить накладные расходы связанные с этим Overhead Overhead Overhead Overhead Overhead Overhead Work Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead Overhead
  • 5.
  • 6.
  • 7.
  • 8. Демо – Task, Concurrent collection
  • 9. Новые примитивы синхронизации Использованы при разработке PLINQ и TPL Для того чтобы решать большинство задач в многопоточности Thread-safe, scalable collections IProducerConsumerCollection<T> ConcurrentQueue<T> ConcurrentStack<T> ConcurrentBag<T> ConcurrentDictionary<TKey,TValue> Phases and work exchange Barrier BlockingCollection<T> CountdownEvent Partitioning {Orderable}Partitioner<T> Partitioner.Create Exception handling AggregateException Initialization Lazy<T> LazyInitializer.EnsureInitialized<T> ThreadLocal<T> Locks ManualResetEventSlim SemaphoreSlim SpinLock SpinWait Cancellation CancellationToken{Source}
  • 10. Распараллеливаем циклы Control flow is a primary source of work Распаралеливаем если итерации независимы «Синхронное» поведение, поток выполнения не пройдет пока цикл не выполнится Возможности Cancelation, breaking, task-local state, scheduling, degree of parallelism Поддержка профайлера Visual Studio 2010 (как у PLINQ) foreach(var item in data) { work(item); } for (int i = 0; i < n; i++) { work(i); } StatementA(); StatementB; StatementC(); Parallel.ForEach(data, item=> { work(item); }); Parallel.For(0, n, i=> { work(i); }); Parallel.Invoke( () => StatementA(), () => StatementB, () => StatementC());
  • 11.
  • 12. Легко с LINQ на PLINQ PLINQ может выполнить все LINQ запросы Простые запросы – проще выполнить Разбивайте сложные запросы на более простые, так чтобы только та часть которую нужно распралелить была PLINQ: src.Select(x => Foo(x)) .TakeWhile(x => Filter(x)) .AsParallel() .Select(x => Bar(x)) .ToArray();
  • 14. Отлаживаем параллелизм Concurrency Profiler Parallel Debugger Parallel tasks Parallel stack
  • 15. Демо – Profiler views, debugger tools
  • 16. Cсылки и источники DevCenter http://msdn.com/concurrency Исходные коды примеров http://code.msdn.microsoft.com/ParExtExamples Блоги http://blogs.msdn.com/pfxteam Parallel stack Доклады, видео http://channel9.msdn.com/learn http://microsoftpdc.com/

Notes de l'éditeur

  1. Проблемы параллелизма свзязаны с дополнительными накладными расходами. Потоки, и многопоточность имеют свою цену. Например есть расходы с созданием, завршением потока, созданием делегата который выполняет работу. Расходы связанные с выполнением и conceptional overhead.Предположим есть какая-то задача, если это цельная задача, она будет использовать один поток.Для того чтобы выполнить эту задачу в 4 потока необхожимо ее разделить на 4 части
  2. Попробую расказать коротко про тредпул в 3.5. Основная идея – треды управляются системой и это потому что треды относительно дорогоие, дорогоие для создание и для уничтожения, дорого создавать много потоков и дорого переключатся между ними. И как результат мы старались выполнять работу как можно меньшим числом потоков. И на самом деле это касается не только тредпула но и любых других потоков.Блокировки замедляют выполнение задач так как тредам приходится ждать ресурсов.Это также как и в реальном мире. На примере комманды разработчиков. Например задача может быть сделана двумя разработчикам достаточно эффективно. Мы хотим увеличить производительность и уменьшить время. Добавляя новых разработчиков к комманде мы достигаем этого но требуется все больше накладных расходов на совещания и прочее.
  3. Lock-free queue – removed lock to reduce contention, instead used interlocked operationsLocal queue – LIFO order because cache locality, may be data cached by CPU(L1, L2, L3 caches)When work thread has no data it asks first local queue that global, and then it steals most old items from local queue of another thread