Организация параллельных потоков. Часть 2 - [2]
Задание. Изучите в Википедии следующие статьи и выясните, что означают эти термины:
— «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). Она бесплатна для учебных и некоммерческих целей.
![Анализ и визуализация данных в электронных таблицах](/storage/book-covers/da/dace9e7ca56db3578a8d8e1c2818dd5c4533a796.jpg)
Перед вами продолжение серии пособий, позволяющих познакомиться с основными технологиями бизнес-аналитики. Многое можно сделать в рамках электронной таблицы, которая превращается в интуитивно понятный интерфейс к продвинутым инструментам анализа данных. В данной работе мы рассмотрим создание реляционной модели и визуализацию иерархии в агрегированных данных с использованием специализированных надстроек.
![Организация параллельных потоков. Часть 1](/storage/book-covers/76/76a00c91e9701e7b2d8f2681152926246f26ca57.jpg)
В данной лабораторной работе рассматриваются основы организации параллельных потоков с помощью стандартных вызовов операционной системы. В работе используется бесплатная интегрированная среда разработки. Приводятся примеры программ на языке Си.
![Применение гистограмм в управлении качеством](/storage/book-covers/5c/5ca303ea182ec86ac1b4bbd28295ae7ddd8ace17.jpg)
Гистограмма — это один из самых простых инструментов статистического УПРАВЛЕНИЯ КАЧЕСТВОМ производства. В этой работе будет использоваться пакет Microsoft Excel для создания исходных данных, а также для построения и анализа гистограммы. Можно также использовать любой другой программный инструмент, позволяющий строить гистограммы.
![Бизнес-аналитика. Извлечение, преобразование и загрузка данных](/storage/book-covers/8e/8e2277955a215770165fc3e74215d279f613edb0.jpg)
Системы бизнес-аналитики работают с различными источниками данных с помощью функций ETL (Extract-Transform-Load). Название ETL можно перевести как «извлечение, преобразование и загрузка данных». Имеется в виду загрузка в хранилище данных для дальнейшей обработки в системе бизнес-аналитики. В простейшем случае это загрузка данных в виде одной, объединённой, консолидированной таблицы. В данной работе мы познакомимся с основными этапами ETL на примере загрузки данных в электронные таблицы.
![Сетевые коммуникации](/storage/book-covers/2c/2c446fc04c66a49ebe5542be580f8aa2e7acbf1f.jpg)
Общение в сети ничем особенно не отличается от обычного, прямого общения между людьми. Это такое же общение, то есть обмен словами, мыслями или эмоциями между людьми. Вы сможете практически познакомиться с общими правилами общения в сети на примере такого вроде бы простого действия, как составление отзыва. Если честно выполнить все предложенные задания, можно будет узнать что-то новое — о других и о себе.
![Бизнес-аналитика. Сводные таблицы. Часть 2](/storage/book-covers/33/331d0f23f5864d37c94ff5c61186aec63926ea2a.jpg)
Данная работа посвящена дальнейшему изучению методов бизнес-аналитики на примере «продвинутых» возможностей функций сводных таблиц. Мы продолжаем использовать общий подход к практическому освоению программного пакета: моделирование и исследование. Мы поработаем с генератором случайных чисел и сформируем реалистичные наборы данных для анализа.