Параллельное программирование с использованием технологий OpenMP и MPI
Контрольная работа
в среде программирования Visual C++ .NET 2020
Среда программирования: Visual C++ .NET 2020
Название работы: Параллельное программирование с использованием технологий OpenMP и MPI
Вид работы: Контрольная работа
Описание: Задание к семестровой работе по курсу «Введение в параллельное программирование»
Составить программы для решения задачи по варианту с использованием технологий параллельного программирования.
Номер варианта совпадает с порядковым номером в списке группы.
1. Задача сортировки больших массивов данных. Необходимо отсортировать массив данных размером не менее 500 Мб в порядке возрастания. Для сортировки использовать механизм сдваивания блоков по 10-20 Мб.
2. Задача поиска максимума в большом массиве данных. Необходимо найти максимум в массиве данных размером не менее 500 Мб. Для поиска использовать механизм сдваивания блоков по 10-20 Мб.
3. Задача вычисления интеграла методом Монте-Карло. Рассчитать значение интеграла произвольной функции на произвольном отрезке. Число отсчетов не менее 10^6 – 10^7.
4. Задача решения систем линейных алгебраических уравнений больших размерностей (порядка 10^2 – 10^3) методом Гаусса.
5. Умножение матриц больших размерностей (порядка 10^3 – 10^4).
6. Задача поиска подстроки в файле. Поиск осуществлять в нескольких файлах одновременно (размер файлов – 10-20Мб, число файлов 10-20).
7. Задача построения массива значений функции на определенном отрезке. Число значений не менее 10^6 – 10^7. Форма вывода – произвольная.
8. Задача вычисления массива данных, элементы которого являются средним
арифметическим соответствующих элементов исходных массивов. Исходные массивы должны иметь большой размер (порядка 20 Мб), число исходных массивов – не менее 20.
9. Задача поиска минимума в большом массиве данных. Необходимо найти минимум в массиве данных размером не менее 500 Мб. Для поиска использовать механизм сдваивания блоков по 10-20 Мб.
10. Задача суммирования больших объемов данных. Необходимо найти сумму массива данных размером не менее 500 Мб. Для сортировки использовать механизм сдваивания блоков по 10-20 Мб.
11. Задача поиска среднего арифметического большого массива данных. Необходимо найти среднее арифметическое массива данных размером не менее 500 Мб. Для поиска использовать механизм сдваивания блоков по 10-20 Мб.
12. Задача сравнения нескольких (порядка 20) больших массивов данных (например, содержимого файлов размером 10-20 Мб). В результате необходимо вывести список совпадающих массивов.
13. Задача вычисления массива данных, элементы которого являются произведением соответствующих элементов исходных массивов. Исходные массивы должны иметь большой размер (порядка 20 Мб), число исходных массивов – не менее 20.
14. Содержимое нескольких массивов данных (не менее 20) переписать в обратном порядке. Размер массивов не менее 20 Мб.
15. Задача сортировки больших массивов данных. Необходимо отсортировать массив данных размером не менее 500 Мб в порядке убывания. Для сортировки использовать механизм сдваивания блоков по 10-20 Мб.
16. Определить порядок вывода нескольких массивов данных (размером не менее 10 – 20 Мб, число массивов – не менее 20) в порядке возрастания максимумов отдельных массивов.
17. Определить порядок вывода нескольких массивов данных (размером не менее 10 – 20 Мб, число массивов – не менее 20) в порядке убывания значения среднего арифметического элементов отдельных массивов.
18. Определить среднее арифметическое значений максимумов массивов. Размер массивов – 10-20 Мб, число массивов – не менее 20.
19. Задача вычисления массива данных, элементы которого являются среднеквадратическим отклонением в ряду соответствующих элементов исходных массивов. Исходные массивы должны иметь большой размер (порядка 20 Мб), число исходных массивов – не менее 20.
20. Определить среднее арифметическое значений минимумов массивов. Размер массивов – 10-20 Мб, число массивов – не менее 20.
21. Задача сортировки больших массивов данных. Необходимо отсортировать массив данных размером не менее 500 Мб в порядке возрастания. Для сортировки использовать механизм сдваивания блоков по 10-20 Мб.
22. Задача поиска максимума в большом массиве данных. Необходимо найти максимум в массиве данных размером не менее 500 Мб. Для поиска использовать механизм сдваивания блоков по 10-20 Мб.
23. Задача вычисления интеграла методом Монте-Карло. Рассчитать значение интеграла произвольной функции на произвольном отрезке. Число отсчетов не менее 10^6 – 10^7.
24. Задача решения систем линейных алгебраических уравнений больших размерностей (порядка 10^2 – 10^3) методом Гаусса.
25. Умножение матриц больших размерностей (порядка 10^3 – 10^4). Программы необходимо разработать в среде Microsoft Visual Studio на языке программирования C/C++. Требования к результатам, полученным в результате выполнения контрольной работы.
Необходимо:
- разработать последовательный вариант программы решения задачи по варианту;
- при необходимости модифицировать его для получения параллельного алгоритма решения задачи;
- распараллелить полученную программу с использованием технологии OpenMP;
- получить зависимости характеристик ускорения и эффективности от размерности решаемой задачи при распараллеливания с использованием технологии OpenMP, от размеров блоков, на которые разбивается задача при распараллеливании; результат оформить в табличной и графической форме.
- проанализировать полученные результаты (OpenMP), сделать выводы;
- распараллелить полученную программу с использованием технологии MPI;
- получить зависимости характеристик ускорения и эффективности от размерности решаемой задачи при распараллеливания с использованием технологии MPI, от размеров блоков, на которые разбивается задача при распараллеливании; результат оформить в табличной и графической форме.
- проанализировать полученные результаты (MPI), сделать выводы.
На отметку «удовлетворительно» необходимо решить задачу с использованием технологии OpenMP.
На отметку «хорошо» необходимо решить задачу с использованием технологий OpenMP и
MPI.
На отметку «отлично» необходимо решить задачу с использованием технологий OpenMP и
MPI. Получит все необходимые зависимости, сделать выводы.
Лабораторная работа.
Задания.
1. Написать многопоточную программу, используя директивы OpenMP:
a) каждый поток должен вывести на экран свой номер. Главный поток дополнительно должен выводить общее число параллельно исполняющихся потоков.
b) Принудительно установить число потоков (1, 5, 10).
2. Написать программу, в которой находится сумма или произведение одномерного массива действительных чисел (float) размерностью 108 всеми перечисленными способами:
a) последовательный вариант
b) используя reduction
c) используя sections
d) используя синхронизацию atomic
Для всех вариантов замерить время выполнения.
3. Определить как упорядочивание выполнения (ordered) влияет на время расчета.
4. Определить как на время расчета влияет разная загрузка (static, dynamic, guided). Задать размер порции (103, 105). Замерить время выполнения.
5. Реализовать последовательную и параллельную версии одного из алгоритмов (по вариантам):
a) гравитационная задача
b) решение системы линейных алгебраических уравнений методом Гаусса
c) решение системы линейных алгебраических уравнений методом Гаусса-Зейделя
d) задача о 8 ферзях (найти количество расстановок N ферзей на доске N*N)
e) сортировка Шелла
f) нахождение всех корней уравнения f(x)=0 на отрезке [0;1000] с различной точностью ( ). В качестве функции f(x) взять полином десятой степени.
Замерить время выполнения обеих версий программы для различных размерностей входных данных.
Контрольные вопросы.
1. Каковы основные принципы технологии OpenMP?
2. Основные директивы OpenMP.
3. Различные виды загрузки (static, dynamic, guided).
4. Виды синхронизации (atomic, critical, barrier, flush, master, ordered).
Год: 2023
Данный заказ (контрольная работа) выполнялся нашим сайтом в 2023-м году, в рамках этого заказа была разработана программа в среде программирования Visual C++ .NET 2020. Если у Вас похожее задание на программу, которую нужно написать на Visual C++ .NET 2020, либо на другом языке программирования, пожалуйста заполните форму, приведённую ниже, после чего Ваше задание в первую очередь рассмотрит наш программист, выполнявший в 2023-м году этот заказ, если он откажется, то Ваше задание оценят другие наши программисты в течение 48-и часов, если оценка нужна срочно, просим Вас оставить пометку об этом - напишите в тексте задания фразу "СРОЧНЫЙ ЗАКАЗ".
Viber:
+79374242235
Telegram: kursovikcom ВКонтакте: kursovikcom WhatsApp +79374242235 E-mail: info@kursovik.com Skype: kursovik.com |