Компоненты библиотеки PFX




Введение в параллельное программирование.NET Framework 4

В прошлом распараллеливание алгоритмов требовало управления потоками и взаимоблокировками на низком уровне. Visual Studio 2010 и. NET Framework 4 улучшают поддержку параллельного программирования, путем предоставления новой среды выполнения, новых типов библиотек класса (TPL) и новых средств диагностики (Concurrency Visualizer). Эти возможности упрощают параллельную разработку, что позволяет разработчикам писать эффективный, детализированный и масштабируемый параллельный код с помощью естественных выразительных средств без необходимости непосредственной работы с потоками или пулом потоков. На Рис. 2.1 представлен общий обзор архитектуры параллельного программирования в. NET Framework 4.


увеличить изображение
Рис. 2.1. Архитектура параллельного программирования в.NET Framework 4

Библиотеки PFX

Библиотека PFX (Parallel Extensions to the. NET Framework) была разработана фирмой Microsoft, данная библиотека позволяет распараллеливать задачи, в которых могут использоваться специальные координирующие структуры данных, таким образом, упрощая написание параллельных программ, и обеспечивая увеличение производительности при увеличении числа ядер или числа процессоров. Существует две стратегии разделения работы между потоками:

· Параллелизм данных (data parallelism). Параллелизм данных используется, если необходимо над большим объемом данных выполнить некий набор задач, поэтому этот подход называется параллелизмом данных, поскольку мы разбиваем данные между потоками.

· Параллелизм задач (task parallelism). В противоположность параллелизму данных, используется параллелизме задач с распараллеливанием задачи, и в таком случае каждый поток выполняет разную задачу.

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

Компоненты библиотеки PFX

Библиотека PFX включает в себя два уровня функциональности (Рис. 2.2):

· Верхний уровень состоит из двух API структурного параллелизма данных: PLINQ и класса Parallel.

· Нижний уровень содержит классы для параллелизма задач (библиотека TPL) и дополнительный набор конструкций, упрощающих решение задач параллельного программирования.


Рис. 2.2. Компоненты библиотеки PFX

Библиотека PLINQ автоматизирует все этапы распараллеливания вычислений, включая разделение работы на задачи, выполнение этих задач различными потоками и объединение результатов в одну выходную последовательность. Использование этой библиотеки называется декларативным, поскольку просто нужно объявить то, что нужно выполнить параллельно, и не нужно заботиться о деталях реализации. При использовании императивного подхода нужно явно прописывать код по разделению задачи и объединению результатов.

Параллельные коллекции (concurrent collections) и спин-примитивы (spinning primitives) помогают в решении низкоуровневых задач параллельного программирования, что очень важно, поскольку PFX проектировалась для работы не только на современном оборудовании, но и с будущими поколениями процессоров со значительно большим количеством ядер. Параллельные коллекции оптимизированы специально для высококонкурентного доступа и сосредоточены на минимизации или устранении блокировок. PLINQ и класс Parallel в частности, основываются на параллельных коллекциях и спин-примитивах для эффективной реализации своей работы.

Примечание. Подробное описание потоков и пулов CLR приведено в "Создание первого приложения"



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-06-11 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: