Валентин Арьков - Организация параллельных потоков. Часть 1
- Название:Организация параллельных потоков. Часть 1
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:2020
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Валентин Арьков - Организация параллельных потоков. Часть 1 краткое содержание
В работе используется бесплатная интегрированная среда разработки. Приводятся примеры программ на языке Си.
Организация параллельных потоков. Часть 1 - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Рис. 6.10. Потеря точности
Примерно оценим сумму половины значений — как среднее f (x), умноженное на половину количества прямоугольников:
S = f ср* N / 2.
Далее можно оценить, при каком числе прямоугольников начинают теряться младшие разряды значения f (x).
Задание. Оцените количество прямоугольников, при котором может начаться потеря точности для переменных типа float и double. Для этого определите, когда будет теряться 1, 2, 3 и т. д. младших разрядов. Оцените время вычислений и тип счётчика цикла.
Задание. Проведите эксперименты, чтобы обнаружить начало потери точности с обоими вещественными типами.
6.7. Параллельное интегрирование
Мы провели подготовительные работы. Можно переходить к экспериментам с параллельными программами. Будем задавать число потоков, равное числу ядер (виртуальных процессоров).
При параллельных вычислениях нужно раздать вычислительные задания разным потокам примерно поровну. Для этого можно использовать метод чередования. Первый поток получает первый отрезок, второй поток — второй отрезок и так далее до максимального номера ядра. Например, до восьмого. Затем мы идём по кругу: первый поток получает девятый отрезок, второй — десятый и так далее. Раздача отрезков продолжается до тех пор, пока не закончатся отрезки.
При организации параллельных вычислений мы просто сообщаем каждому создаваемому потоку его порядковый номер — от 1 до максимального. Затем каждый поток сам находит те значения, которые назначены именно ему.
Задание. Составьте и прогоните параллельные программы для численного интегрирования в соответствии с вариантом задания. Определите показатели эффективности распараллеливания. При возможности доведите программу до потери точности.
Дополнительные эксперименты — это использование части вычислительных ядер, доступных на данном компьютере. В простейшем случае мы запускаем программу, затем она ожидает нажатия клавиши. В этот момент мы задаём Affinity, то есть «соответствие» ядер нашему процессу через Диспетчер задач.
Задание. Прогоните параллельную программу, задавая разные ядра в разном количестве. Определите показатели эффективности распараллеливания.
Ещё одна дополнительная сложность при создании параллельных программ — это вмешательство операционной системы (ОС) и попытки оптимизировать работу компьютера в целом. При выполнении многопоточной программы ОС может использовать ядра так, чтобы обеспечить их равномерную загрузку. ОС будет перебрасывать потоки с одного ядра на другое. Это дополнительные затраты вычислительной мощности. Наша цель — обеспечить максимальную загрузку выбранных ядер. Загрузка должна быть 100% во всех экспериментах.
Для этого можно назначать привязку к ядрам как для всего процесса в целом, так и для каждого потока.
Привязкой к ядрам можно управлять с помощью следующих функций:
— GetProcessAffinityMask;
— SetProcessAffinityMask;
— SetThreadAffinityMask.
Маска привязки системы определяет все доступные ядра.
Маска привязки процесса ProcessAffinityMask — это набор битов, разрешающих выполнение текущего процесса на выбранных ядрах (виртуальных процессорах) — из списка доступных.
Маска привязки потока ThreadAffinityMask — это разрешение использовать указанные ядра текущим потоком — в пределах маски процесса.
Задание. Создайте тестовые программы для работы с привязкой процесса и потоков к ядрам.
Задание. Модифицируйте программу параллельного интегрирования так, чтобы каждый поток выполнялся только на одном ядре. Определите показатели эффективности распараллеливания.
ЛИТЕРАТУРА
1. Воеводин В. В., Воеводин Вл. В. Параллельные вычисления. — СПб.: БХВ-Петербург, 2004. — 608 с.
2. Воеводин Вл. В., Жуматий С. А. Вычислительное дело и кластерные системы. — М.: МГУ, 2007. — 150 с.
Режим доступа:
https://parallel.ru/info/parallel/cluster/
3. Антонов А. С. Введение в параллельные вычисления: Методическое пособие. — М.: МГУ, 2002. — 70 c.
Режим доступа:
https://parallel.ru/news/antonov_intro.html
4. Гергель В. П. Теория и практика параллельных вычислений. — М.: Интуит, 2016. — 501 с.
5. Гергель В. П., Фурсов В. А. Лекции по параллельным вычислениям: Учебное пособие. — Самара: СГАУ, 2009. — 164 с.
6. Гергель В. П. Высокопроизводительные вычисления для многоядерных многопроцессорных систем: Учебное пособие. — Нижний Новгород: ННГУ, 2010. — 421 с.
7. Арьков В. Ю. Анализ распределения в Excel: Учебное пособие. — [б. м.]: Издательские решения, 2019. — 158 с.
Режим доступа:
https://ridero.ru/books/analiz_raspredeleniya_v_excel/
Интервал:
Закладка: