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

Тут можно читать онлайн Валентин Арьков - Организация параллельных потоков. Часть 2 - бесплатно ознакомительный отрывок. Жанр: Прочая околокомпьтерная литература, год 2020. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

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

Организация параллельных потоков. Часть 2 - описание и краткое содержание, автор Валентин Арьков, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
При решении инженерных, экономических и научных задач используются высокопроизводительные вычисления — High Performance Computing или сокращённо HPC.
Параллельные программы нужны для того, чтобы использовать вычислительные мощности многоядерных процессоров и графических ускорителей. В данной работе мы рассмотрим технологию автоматической организации параллельных потоков для многоядерных вычислительных машин.

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

Организация параллельных потоков. Часть 2 - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Валентин Арьков
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

В технологии 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. Выбор версии среды разработки

Раньше, в далёком прошлом (несколько лет тому назад) программы были небольшие, и разработчики предлагали скачать образ диска в формате *.ISO. Его можно было даже на «болванку» записать. На записываемый DVD-Rили на многоразовый, перезаписываемый DVD-RW.

Сегодня выбора почти не осталось. Есть только web-установщик. Небольшая программа, которая скачает из интернета необходимые компоненты для выбранной конфигурации. Счёт может идти на десятки гигабайт, а то и поболее.

Нажимаем кнопку «Установить» и начинается скачивание установщика (рис. 2.3).

Рис. 2.3. Скачивание веб-установщика

Как видим, пока мы скачали чуть больше одного мегабайта.

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

Задание. Установите среду разработки и компилятор языка Си.

3. Составление параллельных программ

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

Каждую программу мы исследуем и рассмотрим со всех сторон.

Попутно мы уточним и проясним разные моменты и особенности.

3.1. Hello, World!

Убедимся, что среда разработки позволит нам сделать что-нибудь полезное. Мы начинаем работу с нуля. С самой простой программы «Всем привет!». Английское название: «Hello, World!»

Создаём новый проект. Пустой, незаполненный проект.

Добавляем новый элемент проекта — файл с исходным текстом программы (рис. 3.1).

Компилируем программу и запускаем её на выполнение.

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

Рис. 3.1. Программа «Всем привет»

Устанавливаем конфигурацию Release.

Нажимаем комбинацию клавиш:

Ctrl + F5.

Видим результаты работы программы в командном окне.

Задание. Создайте программу «Всем привет!» и запустите её на выполнение.

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

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Валентин Арьков читать все книги автора по порядку

Валентин Арьков - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Организация параллельных потоков. Часть 2, автор: Валентин Арьков. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x