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

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

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

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Организация параллельных потоков. Часть 2»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

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

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

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

При этом существует приоритет (относительная важность) настроек. Какая-то настройка важнее другой, и она отменяет менее важную настройку, заменяет своим параметром.

Задание.Проверьте все комбинации настроек и сделайте выводы о приоритете настроек.

4. Управление распараллеливанием

Мы познакомились с основными инструментами создания параллельных программ. Теперь немного углубимся в управление параллельными потоками.

4.1. Вычислительная среда

Чтобы эффективно распараллелить решение задачи, нужно разделить большую задачу на части и раздать эти части параллельным потокам. При этом и главный поток, и каждый поток в группе должны в момент выполнения сориентироваться в обстановке. Нам нужно изнутри программы получить определённые сведения, например, такие:

— число процессоров в компьютере;

— число потоков в группе;

— номер текущего потока в группе.

4.1.1. Число процессоров

Начнём с числа процессоров.

Напомним, что слово «процессор» в нашем случае — это указание на «виртуальный процессор». Другими словами, это любой вычислительный элемент, который может выполнять один поток. Физическая реализация сейчас не важна.

Число «процессоров» можно узнать с помощью библиотечной функции

int omp_get_num_procs (void).

Функция возвращает количество доступных процессоров. Доступных именно нашей программе, а точнее ПРОЦЕССУ. В предыдущей работе мы уже немного познакомились с привязкой процесса к конкретным ядрам.

Создадим новую программу и познакомимся с описанной функцией (рис. 4.1).

Рис. 4.1. Число доступных процессоров

Запускаем программу и видим сообщение (рис. 4.2).

Убеждаемся, что заявленное число процессоров соответствует действительности.

Рис. 4.2. Число процессоров

Задание.Создайте и запустите программу (рис. 4.1). Проверьте, как изменится сообщение программы, если установить число процессоров через параметр окружения NUMBER_OF_PROCESSORSи запустить программу в командной строке.

4.1.2. Число потоков

Рассмотрим, как узнать число потоков в текущей параллельной области программы.

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

Итак, вот библиотечная функция, которая сообщает нам количество параллельных потоков в группе:

int omp_get_num_threads (void).

Расшифровывается название так:

Number of Threads — «число потоков».

Аргументов у функции нет, но скобки при вызове придётся использовать.

Вторая полезная библиотечная функция сообщает номер текущего потока в группе:

int omp_get_thread_num (void).

Название расшифровывается так:

Thread Number — «номер потока».

Номера потоков начинаются с нуля. Это будет главный поток.

Соответственно, максимальный номер потока равен числу потоков минус один.

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

Судите сами:

num_threads / thread_num.

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

Вторая трудность с пониманием названий — слово NUMBER. Оно может означать «количество» или «порядковый номер». Это одно и то же слово, но два разных значения. И переводятся разные значения разными словами. Вообще-то у этого слова ещё штук двадцать других значений, но дальше углубляться мы уже не будем.

Составим программу и посмотрим, как работают эти две функции (рис. 4.3).

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

\t.

Табуляция смещает начало вывода на 8 позиций.

Таким образом, первое число выводится начиная с 1-й позиции, второе число — с 9-й и т. д.

Табуляция нам ещё пригодится для анализа эффективности и точности.

Рис. 4.3. Номер потока и количество потоков

Запускаем программу и видим сообщения в произвольном порядке (рис. 4.4). Кто первый успел — тот и напечатал. Если запускать программу несколько раз, получим разные результаты.

Рис. 4.4. Список номеров потоков

Задание.Составьте программу (рис. 4.3). Запустите программу несколько раз и обратите внимание на порядок вывода номеров потоков.

4.2. Параллельный цикл

В этом разделе мы организуем параллельное исполнение цикла FOR и исследуем поведение программы. Результаты могут оказаться не совсем очевидными. Это особенности параллельного программирования. Вот с этими особенностями нам и предстоит познакомиться.

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

Интервал:

Закладка:

Сделать

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

Представляем Вашему вниманию похожие книги на «Организация параллельных потоков. Часть 2» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


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

Обсуждение, отзывы о книге «Организация параллельных потоков. Часть 2» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x