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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

Рис. 4.21. Таблица из файла

Задание.Загрузите текстовый файл в Excel.

Сортируем таблицу по колонке S(рис. 4.22).

Для этого нажимаем кнопку в виде стрелочки справа от названия столбца. Выбираем в выпадающем списке сортировку по возрастанию:

Sort Smallest to Largest.

Изучаем порядок выполнения потоков.

Наблюдаем совершенно непредсказуемую картину.

Рис. 4.22. Сортировка по S

Задание.Выполните сортировку и изучите порядок выполнения потоков.

4.2.4. Локальные копии переменной

Вернёмся к редукции и рассмотрим локальные копии общей переменной.

Итак, в директиве parallelмы организуем редукцию переменной Sпутём сложения частичных, промежуточных значений:

reduction (+:S).

Это означает, что при входе в параллельную область создаётся несколько параллельных потоков. В каждом из этих потоков (включая и главный поток) берётся наша общая переменная Sи для неё создаётся локальная копия. То есть в каждом потоке появляется своя внутренняя переменная.

Мало того, в момент создания локальная копия ещё и получает начальное значение. Это называется ИНИЦИАЛИЗАЦИЯ — «присвоение начального значения». Если редукция делается путём суммирования, то локальные копии получают нулевое начальное значение.

Немного изменим предыдущею программу (рис. 4.23).

Перед началом параллельной области присвоим общей переменной Sначальное значение 10 (строка 5).

Добавляем редукцию для параллельной области (строка 7).

В цикле делаем 20 итераций, чтобы более наглядно показать процесс выполнения программы (строка 8).

После завершения параллельной области и редукции выводим собранное из локальных копий суммарное значение общей переменной S(строка 12).

На экран дополнительно выводим столбец значений счётчика цикла i (строки 6, 10, 12).

После завершения цикла в колонке значений счётчика выводим число 20 (строка 12). Обратим внимание, что при выполнении цикла счётчик принимает значения от 0 до 19.

Рис. 4.23. Отслеживание инициализации

Далее проделаем знакомые нам шаги по выполнению программы и анализу результатов в Excel.

Компилируем программу и убеждаемся в отсутствии ошибок.

Переходим в командное окно.

Задаём три потока:

set OMP_NUM_THREADS=3.

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

Перенаправляем вывод в текстовый файл.

Загружаем файл в Excel.

Форматируем таблицу и сортируем по номеру потока (рис. 4.24).

Теперь можно немного отдышаться и рассмотреть результаты работы.

При входе в параллельную область каждая локальная копия переменной Sполучила нулевое значение. На каждой итерации цикла к ней прибавляли по единичке.

Нулевой и первый потоки получили в своё распоряжение по семь итераций, второй поток — шесть. Так что работу поделили почти поровну.

После выхода из параллельной области частичные суммы сложили, да ещё к этой сумме добавили первоначальное значение 10:

S = 7 +7 +6 +10 = 30.

Так работает редукция в параллельном цикле for.

Рис. 4.24. Изменение локальных копий

Задание.Составьте программу (рис. 4.23) и изучите поведение локальных копий общей переменной при распараллеливании цикла с редукцией.

4.3. Вычислительная нагрузка

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

Наша конечная цель — загрузить все ядра работой на 100%. Только тогда можно будет измерить эффективность распараллеливания.

4.3.1. Полная загрузка

Первый эксперимент — полная загрузка процессора.

Чтобы обеспечить работой все вычислительные элементы процессора, сделаем побольше итераций в нашем цикле. А для этого придётся взять другой целый тип счётчика — «длинное-длинное целое»:

long long.

Это восемь байт, или 8 * 8 = 64 бита. Максимальное значение соответствует 2 64. Для целого числа со знаком получится раза в два поменьше, но всё равно хорошо.

Текст программы с нашей «большой задачей» приведён на рис. 4.25.

Мы объявляем тип счётчика и суммы (строка 4).

Число итераций нашего цикла берём много, но не больше максимально возможного (строка 7).

Тело цикла — прибавление единичек к сумме (строка 8).

Рис. 4.25. «Большая» задача

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

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

Интервал:

Закладка:

Сделать

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

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


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

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

x