|
|||
Пример 2.. Задание ⇐ ПредыдущаяСтр 2 из 2 Пример 2. Применим полученные знания о технологии OpenMP для параллельного вычисления суммы ряда Эту задачу мы уже рассматривали на семинаре по MPI. Видно, что общая структура программы сохраняется, но необходимо убрать все конструкции MPI, добавить в нужных местах конструкции OpenMP, а вместо явного распараллеливания основного цикла использовать прагмы parallel, for и опцию reduction относительно переменной «с» для корректного суммирования. Для засечек времени (time1, time2) используется функция omp_get_wtime(). Запуск выполнен при количестве членов ряда n=1000000000, для количества нитей 10. Печатается вычисленная сумма и время счета.
Задание 1. Изучить в учебном пособии по OpenMP раздел 3.2. 2. Воспроизвести на кластере Hybrilit вышеприведенные примеры по применению опции reduction. 3. Заменить в программе из Примера 1 операцию сложения на операцию умножения. Прокомментировать результат запуска. 4. Для программы из примера 2 убедиться, что сумма ряда вычисляется корректно. Выполнить серию запусков с увеличивающимся количеством нитей c количеством нитей 1,2,3,4,5,6… Найти оптимальное количество нитей, обеспечивающих наименьшее время счета для этой задачи
|
|||
|