Размер шрифта
-
+

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

Поскольку листов в отчёте будет много, названия листов (на вкладках) содержат только номера страниц. Подробные названия нужны в верхней части листа и в оглавлении.

Задание. Создайте файл отчёта и заполните титульный лист.

2. Технология OpenMP

В данной работе мы знакомимся с технологией автоматического распараллеливания программ OpenMP.

Название расшифровывается следующим образом:

Open Multi-Processing.

Распараллеливание программ поддерживается для двух языков программирования

– Fortran;

– С/С++.

2.1. Ключевые понятия

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

Многоядерные компьютеры – это так называемые «системы с общей памятью». Другое название – разделяемая память. Английское название: SHARED MEMORY.

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

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

– «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