PARALLELISM В .NET 4.0 И VISUAL STUDIO 2010 презентация

Нововведения в Parallel Computing Parallel Pattern Library Resource Manager Task Scheduler Task Parallel Library Parallel LINQ Threads Native Concurrency Runtime Managed Libraries ThreadPool Data Structures Data

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


Слайд 2

Нововведения в Parallel Computing

Parallel Pattern Library

Resource Manager
Task Scheduler
Task Parallel Library
Parallel LINQ

Threads
Native

Concurrency Runtime

Managed Libraries

ThreadPool

Data Structures

Data Structures


Tools

Async
Agents Library

UMS Threads

Microsoft
Research

Visual Studio 2010

Parallel
Debugger Windows

Profiler Concurrency
Analysis

Race Detection

Fuzzing


Axum

Visual F#

Managed Languages

Rx

Native Libraries

Managed Concurrency Runtime

DryadLINQ

HPC Server

Доклад

Operating System

Доклад


Слайд 3Демо - Parallel Sudoku


Слайд 4Work
Накладые расходы при паралелизме
Необходимо деление операций
Выполнения потоков вызывает лишние накладные расходы
Чем

больше потоков тем больше лишних расходов
Для быстрого запуска/выполнения потоков необходимо уменьшить накладные расходы связанные с этим

Overhead

Overhead

Overhead

Overhead

Overhead





Слайд 5
Global Queue
Рабочий поток N
Рабочий поток 1
ThreadPool в .NET 3.5





Item 7
Item 3
Item

4

Item 5

Item 6

При создании множества потоков все они обращаются в глобальную очередь за потоками – результат накладные расходы
И возникает все больше и больше блокировок

Item 3.1


Слайд 6
ThreadPool в .NET 4
Lock-Free
Global 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


Слайд 7Task – новый тип для многопоточности
ThreadPool.QueueUserWorkItem
Хорошо подходит для того чтобы стартовать

и «забыть»
Но нехватает:
Waiting
Canceling
Continuing
Exceptions
Debugging
Dataflow between operations


Слайд 8Демо – Task, Concurrent collection


Слайд 9Новые примитивы синхронизации
Thread-safe, scalable collections
IProducerConsumerCollection
ConcurrentQueue
ConcurrentStack
ConcurrentBag
ConcurrentDictionary

Phases and work exchange
Barrier
BlockingCollection
CountdownEvent

Partitioning
{Orderable}Partitioner
Partitioner.Create

Exception handling
AggregateException
Initialization
Lazy
LazyInitializer.EnsureInitialized
ThreadLocal

Locks
ManualResetEventSlim
SemaphoreSlim
SpinLock
SpinWait

Cancellation
CancellationToken{Source}


Использованы

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

Слайд 10Распараллеливаем циклы
Control flow is a primary source of work




Распаралеливаем если итерации

независимы




«Синхронное» поведение, поток выполнения не пройдет пока цикл не выполнится
Возможности
Cancelation, breaking, task-local state, scheduling, degree of parallelism
Поддержка профайлера Visual Studio 2010 (как у PLINQ)

for (int i = 0; i < n; i++)
{
work(i);
}

foreach(var item in data)
{
work(item);
}

StatementA();
StatementB;
StatementC();

Parallel.For(0, n, i=>
{
work(i);
});

Parallel.ForEach(data, item=>
{
work(item);
});

Parallel.Invoke(
() => StatementA(),
() => StatementB,
() => StatementC());


Слайд 11Легко с LINQ на PLINQ
LINQ to Objects:

int[] output = arr

.Select(x => Foo(x))
.ToArray();

int[] output = arr.AsParallel()
.Select(x => Foo(x))
.ToArray();

PLINQ:


Слайд 12Легко с LINQ на PLINQ
PLINQ может выполнить все LINQ запросы
Простые запросы

– проще выполнить
Разбивайте сложные запросы на более простые, так чтобы только та часть которую нужно распралелить была PLINQ:


src.Select(x => Foo(x))
.TakeWhile(x => Filter(x))
.AsParallel()
.Select(x => Bar(x))
.ToArray();


Слайд 13Демо – PLINQ


Слайд 14Отлаживаем параллелизм
Concurrency Profiler
Parallel Debugger
Parallel tasks
Parallel stack


Слайд 15Демо – Profiler views, debugger tools


Слайд 16Cсылки и источники
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/


Слайд 17Спасибо за внимание:)


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика