PARALLELISM В.NET 4.0 И VISUAL STUDIO 2010 Калита Роман TaskManagementSoft.

Презентация:



Advertisements
Похожие презентации
Microsoft TechDays Евгений Марченков Эксперт по технологиям разработки ПО.
Advertisements

Visual Basic.NET 1 Visual Basic.NET.NET Microsoft NET Framework.NET.NET.NET.NET Microsoft NET Framework.NET.NET.NET Microsoft.NET.
NVIDIA Parallel Nsight NVIDIA Parallel Nsight NVIDIA DevTech | Anton Obukhov.
Microsoft TechDays Назар Андриенко Ведущий разработчик MCAD.
Игорь Шаститко Майкрософт Украина Специалист по технологиям.
Microsoft TechDays Михаил Черномордиков Developer Evangelist, Microsoft
Сушин Александр ОАО «Редуктор-ПМ» MCSE
1 Коллекции Коллекции.NET 1.0 Классы коллекций заданы как часть пространства имен System.CollectionsSystem.Collections
VISUAL STUDIO 2010 И.NET 4.0 Калита Роман TaskManagementSoft.
Сергей Байдачный Специалист по разработке ПО Майкрософт Украина
© 2006 Cisco Systems, Inc. All rights reserved. CIPT1 v Administration of Cisco Unified CallManager Release 5.0 Implementing Disaster Recovery.
Project BNB-Grid: solving large scale optimization problems in a distributed environment M. Posypkin (ISA RAS)
OPERATING SYSTEMS. An operating system (OS) is an interface between hardware and user which is responsible for the management and coordination of activities.
Отслеживание изменений данных в SQL Server 2008 Денис Резник Trainer, Microsoft Innovation Center Team Lead, LPP Soft MCITP, MCTS.
Week -9 vim contd.. and System Configuration tools.
Microsoft Преимущества лицензирования для крупных организаций Игорь Чалых Специалист по работе с крупными корпоративными клиентами и государственным сектором.
Максим Павловский
Version 2009 Personal Security. Version 2009 Chapter 1. Purpose and Installation of Kaspersky Internet Security 2009 Personal Security.
Платформа 2010 Алексей Федоров. Hyper-V Windows Server 2008 R2 Windows 7 Microsoft.NETMicrosoft SQL Server Продукты компаний-разработчиков Win32 Windows.
Средства разработки на платформе Windows Windows Server 2003/2008 Веб-сервер Microsoft IIS 6/7.NET Framework 3.5, СУБД: Microsoft SQL Server 2005/2008.
Транксрипт:

PARALLELISM В.NET 4.0 И VISUAL STUDIO 2010 Калита Роман TaskManagementSoft

Нововведения в Parallel Computing Parallel Pattern Library Resource Manager Task Scheduler Task Parallel Library Parallel LINQ Threads Native Concurrency Runtime Managed Libraries ThreadPool Data Structures Tools Async Agents Library Async Agents Library UMS Threads Microsoft Research Microsoft Research Visual Studio 2010 Parallel Debugger Windows Parallel Debugger Windows Profiler Concurrency Analysis Profiler Concurrency Analysis Race Detection Fuzzing Axum Visual F# Managed Languages Rx Native Libraries Managed Concurrency Runtime DryadLINQ Легенда: Research / Incubation Visual Studio 2010 /.NET 4 Windows 7 / Server 2008 R2 HPC Server Operating System

Демо - Parallel Sudoku

Накладые расходы при паралелизме

Global Queue Рабочий поток N Рабочий поток 1 ThreadPool в.NET 3.5 Program Thread Item 7 Item 3 Item 4 Item 5 Item 6 При создании множества потоков все они обращаются в глобальную очередь за потоками – результат накладные расходы И возникает все больше и больше блокировок Item 3.1

Program Thread ThreadPool в.NET 4 Lock-Free Global Queue Lock-Free Global Queue Local Work- Stealing Queue Local Work- Stealing Queue Local Work- Stealing Queue Work Thread 1 Work Thread N Item 1 Item 2 Item 3 Item 2.1 Минимизации синхронизации и блокировок Hill-Climbing – определение оптимального числа потоков в пуле в зависимости от нагрузки на CPU

Task – новый тип для многопоточности

Демо – Task, Concurrent collection

Новые примитивы синхронизации Использованы при разработке PLINQ и TPL Для того чтобы решать большинство задач в многопоточности

for (int i = 0; i < n; i++) { work(i); } for (int i = 0; i < n; i++) { work(i); } foreach(var item in data) { work(item); } foreach(var item in data) { work(item); } StatementA(); StatementB; StatementC(); StatementA(); StatementB; StatementC(); Parallel.For(0, n, i=> { work(i); }); Parallel.For(0, n, i=> { work(i); }); Parallel.ForEach(data, item=> { work(item); }); Parallel.ForEach(data, item=> { work(item); }); Parallel.Invoke( () => StatementA(), () => StatementB, () => StatementC()); Parallel.Invoke( () => StatementA(), () => StatementB, () => StatementC());

Легко с LINQ на PLINQ > LINQ to Objects: int[] output = arr.Select(x => Foo(x)).ToArray(); int[] output = arr.Select(x => Foo(x)).ToArray(); int[] output = arr.AsParallel().Select(x => Foo(x)).ToArray(); int[] output = arr.AsParallel().Select(x => Foo(x)).ToArray(); > PLINQ:

Легко с LINQ на PLINQ src.Select(x => Foo(x)).TakeWhile(x => Filter(x)).AsParallel().Select(x => Bar(x)).ToArray(); src.Select(x => Foo(x)).TakeWhile(x => Filter(x)).AsParallel().Select(x => Bar(x)).ToArray();

Демо – PLINQ

Отлаживаем параллелизм

Демо – Profiler views, debugger tools

Cсылки и источники

Спасибо за внимание:)