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

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

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

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

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

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

Интервал:

Закладка:

Сделать

Определяем продолжительность расчётов (строки 11 и 15). Для используем библиотечную функцию omp_get_wtime. Мы уже убедились в точности её работы.

В конце программы выводим на экран число потоков, полученную сумму и время работы (строка 16).

Сумма должна быть всегда одна и та же. Это просто проверка правильности работы программы. На всякий случай. Если не выводить результат работы S на экран и никак его не использовать, компилятор может немного оптимизировать нашу программу. За ним нужен глаз да глаз.

Рис.5.28. Параллельное суммирование

Задание.Составьте программу (рис. 5.28).

Программа готова.

Незабываем выбрать конфигурацию Release и включить поддержку OpenMP.

Скомпилируем её:

Build — Build Solution.

Исполняемый файл готов.

Создаём пакетный файл для многократного запуска с разным числом потоков (рис. 5.29).

Мы уже познакомились с использованием цикла в пакетных файлах.

Отключаем вывод команд на экран.

Выводим заголовок таблицы.

Далее вызываем по пять прогонов с числом потоков от одного до двенадцати.

Это решение задачи «в лоб».

Немного громоздко, но работоспособно.

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

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

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

В результате у нас осталось всего три строчки в нашем пакетном файле (рис. 5.30). Такой файл легко отлаживать. Меньше шансов ошибиться.

Рис. 5.30. Вложенные циклы

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

Переходим в командную строку.

Меняем текущий диск и каталог.

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

19> 19.txt.

Мы называем пакетный и текстовый файл одинаково —просто чтобы немного запутать читателя.

Загружаем полученный текстовый файл в Excel.

Обрабатываем данные с помощью сводной таблицы.

Строим график изменения времени выполнения от числа потоков (рис. 5.31).

Как ни странно, скорость работы почти не меняется, начиная с четырёх потоков.

Рис.5.31.

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

Теперь наконец-то мы сможем найти показатели ускорения и эффективности.

У нас есть число потоков и время выполнения.

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

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

Paste Options — Values.

Добавим столбцы показателей S pи E p(рис. 5.32).

Мы сравниваем длительность работы параллельной программы с последовательной. Поэтому в формулах для расчёта ускорения мы фиксируем адрес первой ячейки E18, нажав клавишу F4. За счёт этого мы можем копировать нашу формулу в остальные ячейки столбца.

Строим графики ускорения и эффективности в зависимости от числа потоков (и ядер).

Рассмотрим график. Картина довольно неожиданная. Получается, что ускорение нашей программы не достигает 8 раз на восьми ядрах. Мы не достигли даже ускорения в четыре раза.

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

Рис. 5.32. Ускорение и эффективность

Задание.Постройте таблицу и графики (рис. 5.32). Сделайте выводы об ускорении программы.

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

Интересно, что будет, если привязать каждый поток к своему ядру? Станет ли от этого программа работать быстрее?

Задание. Добавьте в программу параллельного суммирования привязку потоков к ядрам. Повторите исследование и выясните, как влияет привязка к ядрам на ускорение расчётов.

6. Численное интегрирование

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

Посмотрим, как покажет себя компьютер на задаче численного интегрирования. Там придётся работать с вещественными числами. А ведь операции с плавающей точкой выполняются гораздо дольше.

6.1. Варианты заданий

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

Формула приводится на рис. 6.1.

Рис. 6.1. Определённый интеграл

Мы используем те же самые варианты заданий, что и предыдущей работе (рис. 6.2).

Рис. 6.2. Варианты заданий

Номер варианта — последняя цифра номера зачётки. Для цифры ноль берём десятый вариант

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

Задание. Опишите в отчёте свой вариант задания.

6.2. Аналитическое решение

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

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

В предыдущей работе мы уже выполнили следующие этапы:

— аналитическое решение задачи;

— последовательная программа;

— параллельные потоки.

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

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

Задание. Запишите в отчёте аналитическое решение задачи — формулы и найденное значение.

6.3. Последовательная программа

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

6.3.1. Одинарная точность

В этом разделе мы исследуем точность вычислений при использовании чисел одинарной точности.

Напомним, что тип floatможет обеспечить всего 7 десятичных разрядов для значащей части числа (мантиссы).

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

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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