Валентин Юльевич Арьков - Организация параллельных потоков. Часть 2 стр 2.

Книгу можно купить на ЛитРес.
Всего за 5.99 руб. Купить полную версию
Шрифт
Фон

Задание. Изучите в Википедии следующие статьи и выясните, что означают эти термины:

 «Multiprocessing» или «Многопроцессорность»;

 «Multithreading (computer architecture)» или «Многопоточность»;

 «Многоядерный процессор» или «Multi-core processor»;

 «OpenMP».

Задание. Изучите историю разработки технологии и версии спецификаций для обоих языков программирования:

https://www.openmp.org/specifications/.


OpenMP использует наиболее распространённую модель параллелизма:

Single Instruction Multiple Data (SIMD).

В этом случае параллельная часть программы состоит из нескольких одинаковых потоков, которые обрабатывают разные наборы данных.

Задание. Изучите в Википедии статьи «SIMD» и «Таксономия Флинна». Выясните, что такое SIMD.

2.2. Многопоточность

Использование OpenMP проще всего изучать на компьютере с одним многоядерным процессором.

Чтобы сделать из последовательной программы параллельную, разработчику нужно добавить всего несколько строк. Компилятор может игнорировать директивы распараллеливания. В этом случае мы получаем исходную последовательную программу. Если настроить компилятор на использование OpenMP, он автоматически сгенерирует и скомпилирует параллельную программу.

В технологии OpenMP происходит динамическое создание потоков. В процессе работы программа может создавать и уничтожать дополнительные потоки (рис. 2.1). Такая модель условно называется «fork-join». Это означаетразделение программына несколько параллельных веток, выполнение работы параллельном режиме и последующее слияние в одну последовательную ветку.


Рис. 2.1. Модель распараллеливания fork-join


Задание. Изучите в Википедии статью «Fork join».

2.3. Термины OpenMP

В технологии OpenMP используют следующие понятия и термины.

Construct  Конструкция  директива и следующий за ней структурный блок команд (часть программы, ограниченная фигурными скобками).

Directive  Директива  строка, начинающаяся как #pragma omp и определяющая поведение программы.

Thread  Поток  часть программы, которая может выполняться последовательно на одном ядре.

Master thread  Главный поток  поток, который существует на протяжении всего времени выполнения процесса и который создаёт группу параллельных потоков (Team) при входе в параллельную область.

Team  Группа параллельных потоков  один или несколько потоков, которые участвуют в выполнении какой-либо конструкции языка.

КОНЕЦ ОЗНАКОМИТЕЛЬНОГО ОТРЫВКА

Параллельная программа состоит из параллельных и последовательных областей.

Parallel region  Параллельная область  часть программы, которая может выполняться несколькими потоками.

Serial region  Последовательная область  часть программы, которая выполняется только главным потоком.

Переменные делятся на два вида  в зависимости от способа доступа:

Private  уникальная переменная, доступная только внутри потока.

Shared  общая переменная, доступная всем параллельным потокам в рамках одной группы.

2.4. Ответственность разработчика

Лёгкость распараллеливания оборачивается повышением ответственности программиста.

Конкретная реализация OpenMP (среда разработки, компилятор и библиотека) не обязательно проверяет корректность распараллеливания и возникновение следующих нежелательных ситуаций:

 Dependencies  зависимости по данным между параллельными потоками;

 Conflicts  конфликты доступа к данным;

 Deadlocks  тупиковые ситуации (взаимная блокировка);

 Race conditions  ситуация гонки за доступ к данным.

Как видим, все эти ситуации связаны с обращением к общим данным из нескольих параллельных потоков. В последовательных программах таким проблем просто не может возникнуть.

Ответственность за корректность составления программы лежит полностью на составителе программы. Все эти положения можно найти в тексте спецификации OpenMP.

2.5. Инструменты OpenMP

Для реализации параллелизма в технологии OpenMP используют три вида инструментов:

 Directives  Директивы компилятора;

 Library functions  Готовые библиотечные функции;

 Environment variables  Переменные среды (параметры окружения).


2.5. Среда разработки

Всё программное обеспечение, используемое в данной работе, является бесплатным и доступно на официальных сайтах фирм-разработчиков. Программы устанавливают в операционной системе Microsoft Windows.

Интегрированная среда разработки Microsoft Visual Studio Community Edition предоставляется бесплатно для студентов, индивидуально работающих программистов и разработчиков программного обеспечения с открытым исходным кодом Open Source.

В данной работе мы будем использовать Visual Studio. Не потому, что это самый лучший компилятор. И не потому, что мы хотели бы заработать на рекламе конкретного программного продукта. Просто под руку попалось. Работает для наших задач  и на том спасибо.

Желающие могут работать в любой другой операционной системе и использовать любой другой компилятор языка программирования Си. Всё, что требуется  это поддержка технологии распараллеливания OpenMP.

Устанавливаем Visual Studio.

Переходим на сайт:

https://visualstudio.microsoft.com/.

Выбираем версию Community Edition (рис. 2.2). Она бесплатна для учебных и некоммерческих целей.


Рис. 2.2. Выбор версии среды разработки

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке

Скачать книгу

Если нет возможности читать онлайн, скачайте книгу файлом для электронной книжки и читайте офлайн.

fb2.zip txt txt.zip rtf.zip a4.pdf a6.pdf mobi.prc epub ios.epub fb3