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

Презентация на тему PARALLELISM В .NET 4.0 И VISUAL STUDIO 2010, предмет презентации: Образование. Этот материал содержит 17 слайдов. Красочные слайды и илюстрации помогут Вам заинтересовать свою аудиторию. Для просмотра воспользуйтесь проигрывателем, если материал оказался полезным для Вас - поделитесь им с друзьями с помощью социальных кнопок и добавьте наш сайт презентаций ThePresentation.ru в закладки!

Слайды и текст этой презентации

Слайд 1
Текст слайда:

PARALLELISM В .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


Слайд 4
Текст слайда:

Work

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

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

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


Слайд 7
Текст слайда:

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

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


Слайд 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/


Слайд 17
Текст слайда:

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



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

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

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

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

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


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

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