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

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

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

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

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

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

Интервал:

Закладка:

Сделать

В первой строчке пакетного файла мы отключаем вывод на экран вводимой команды:

@echo off.

В следующих строчках мы несколько раз запускаем нашу программу на выполнение. Расширение имени файла EXEне указываем.

Сохраняем файл в каталоге Release — там же, где находится наш исполняемый файл. Указываем имя файла 08 и расширение имени CMD. Это сокращение от слова COMMAND. Можно также использовать традиционное расширение BAT — от слова BATCH — «пакетный файл».

Рис. 4.7. Пакетный файл

Задание.Создайте пакетный файл (рис. 4.7).

Возвращаемся в командное окно. Переходим в каталог Releaseнашего текущего проекта (рис. 4.8). Вводим команду dir. Убеждаемся, что в текущем каталоге появился пакетный файл 08.cmd. Здесь же видим нас исполняемый файл с расширением EXE.

Рис. 4.8. Каталог Release

Запускаем наш пакетный файл. Вводим название файла, не указывая его расширение:

08.

Программа запускалась десять раз. Во всех случаях ответ правильный (рис. 4.9).

Рис. 4.9. Пакетный запуск программы

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

Мы создали первый пакетный файл и ввели нашу команду несколько раз. В пакетном файле можно организовать цикл. Традиционный цикл FORсо счётчиком. Тогда файл получается покороче и попроще.

Первая строчка отменяет вывод выполняемых команд на экран — как в предыдущем примере:

@echo off.

Вторая строчка — цикл FOR.

Имя счётчика цикла в пакетном файле начинается с двух символов процента:

%%i.

Ключ /Lпозволяет указать диапазон значений счётчика и шаг изменения.

Далее мы указываем диапазон значений — от единицы до десяти с единичным шагом:

(1, 1, 10).

Тело цикла — наша команда — запуск программы на выполнение.

Запускаем пакетный файл (рис. 4.10).

Результаты нас устраивают.

Последовательное выполнение программы не даёт ошибок в расчётах.

Рис. 4.10. Цикл в пакетном файле

Задание.Создайте пакетный файл (рис. 4.10) и запустите его.

Теперь запустим несколько потоков.

Установим три потока:

set OMP_NUM_THREADS=3.

Запускаем пакетный файл.

Получаем десять разных результатов (рис. 4.11).

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

Рис. 4.11. Результаты гонки

Задание.Запустите пакетный файл, задавая разное количество параллельных потоков. Обратите внимание на ошибки в расчётах.

4.2.2. Редукция

Более грамотный стиль параллельного программирования включает использование специальных возможностей. Мы рассмотрим одну из них.

При параллельном решении большой задачи возникает проблема «сбора промежуточных (частичных) сумм». Каждый поток обсчитывает свою часть задачи и получает часть общей суммы. После этого нужно собрать все частичные суммы и сложить их. Такая операция нужна очень часто. Поэтому была разработана готовая процедура «редукции».

Английское слово REDUCTION в данном конкретном случае означает «сворачивание, собирание, соединение, объединение, сведение».

Мы будем использовать параметр reduction в директиве pragma:

#pragma omp parallel for reduction (+: S).

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

Знак [+]указывает, что будет найдена сумма (есть и другие операции).

S — переменная, с которой будем работать.

Составляем программу (рис. 4.12).

При входе в параллельную область в каждом потоке создаётся локальная копия переменной S. Это механизм напоминает создание локальной переменной внутри подпрограммы. Из других модулей к локальной переменной доступа нет.

Слово ЛОКАЛЬНЫЙ буквально означает «местный, внутренний».

Рис. 4.12. Редукция

Создаём пакетный файл, аналогичный рассмотренному.

Переходим в командное окно и задаём разное количество параллельных потоков.

Запускаем пакетный файл.

Смотрим на результаты (рис. 4.13).

Последовательный запуск даёт правильные результаты.

Рис. 4.13. Последовательный запуск

Задаём несколько потоков.

Запуск тоже даёт правильные результаты (рис. 4.14).

Мы применили редукцию и попутно исключили ситуацию гонки.

Рис. 4.14. Параллельный запуск

Задание.Запустите параллельную программу с разным количеством потоков и изучите полученные результаты.

4.2.3. Порядок выполнения потоков

Следующий эксперимент — изучим порядок запуска и выполнения параллельных потоков.

Составим программу на основе предыдущих (рис. 4.15). Обратите внимание, что мы временно убрали редукцию из директивы parallel. Все потоки обращаются к одной и той же общей переменной S.

Программа печатает заголовок таблицы (строка 6).

Затем выводит номер потока и значение суммы (строка 10).

Так мы сможем проследить, в каком порядке работает программа.

Рис. 4.15. Порядок потоков

Запускаем программу, получаем таблицу (рис. 4.16).

Как видим, номера потоков печаются в случайном порядке.

Рис. 4.16. Порядок потоков

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

Перейдём в командное окно.

Запускаем нашу программу и направим вывод в файл — вместо вывода на экран:

omp-10-order> order. txt.

Эта манипуляция называется «перенаправление стандартного вывода». Экран — это стандартное устройство вывода, с которым работает функция printf. Вместо экрана, весь текстовый вывод отправляется в файл.

Итак, теперь вся таблица вместе с заголовком записана в текстовый файл. Открываем файл в Блокнотеи убеждаемся в том, что вся информация здесь (рис. 4.17).

Рис. 4.17. Вывод в файл

Задание.Запустите программу и направьте вывод в файл. Откройте файл в Блокноте и изучите его содержимое.

Загрузим текстовый файл для анализа в электронную таблицу.

Запускаем Excel. Вызываем в верхнем меню открытие файла:

File — Open — Other locations — Browse.

Переходим в каталог Release и находим текстовый файл: order. txt.

Устанавливаем загрузку текстовых файлов:

Text Files (*prn, *.txt, *csv).

В правой части окна видим содержимое файла (рис. 4.18).

Нажимаем ОК.

Рис. 4.18. Загрузка файла

В окне Мастера импорта файла настраиваем параметры:

Original data type — Delimited;

My data has headers(рис. 4.19).

Нажимаем Next.

Рис. 4.19. Первый шаг импорта

На втором шаге импорта указываем разделитель полей — символ табуляции:

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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