КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Алгоритмы параллельного поиска и сортировки
Параллельный поиск минимального элемента в массиве – достаточно легкая задача, во многом аналогичная задачам из первой лабораторной работы. Исходный массив Задача поворота трехмерной фигуры в пространстве вокруг одной из осей координат также легко решается при помощи функций коллективного взаимодействия MPI. Корневой процесс выделяет память под массив, читает его из входного файла, затем делит его между остальными процессами при помощи MPI_Scatter или MPI_Scatterv. Каждый процесс также выделяет память под свою часть массива и производит над ней необходимую операцию – поворот вокруг оси. По окончании поворота все процессы вызывают MPI_Gather и передают результаты вычислений корневому процессу. При этом на узлах расходуется памяти под массив меньше, чем в корневом процессе в m+1 раз (m-число процессов).
С алгоритмами сортировки массивов все намного сложнее. Сортировке данных посвящена обширная литература. Монография Кнута [1] содержит подробное описание и анализ огромного количества различных алгоритмов. Рассматривамый далее параллельный алгоритм предполагает двухэтапную сортировку: - последовательную сортировку фрагментов массива, распределенных по процессорам системы; - объединение упорядоченных фрагментов массива – перемещение элементов массива между процессорами. Время сортировки массива зависит от множества факторов, среди которых не последнее место занимает характер распределения чисел в сортируемом массиве (степень его упорядоченности перед началом сортировки). В качестве тестовых данных используются различные массивы целых четырехбайтовых чисел: - псевдослучайные неупорядоченные числа; - числа, расположенные по не возрастанию; - числа, расположенные по не убыванию. Далее приняты следующие обозначения: n - число элементов в сортируемом массиве; p - число процессоров; T(n, p) - общее время сортировки массива из n элементов на p процессорах; M(n, p) - общее число условных операций, необходимых для сортировки массива из n элементов на p процессорах. Подробное описание алгоритмов быстрой, пирамидальной и «обменной сортировки со слиянием» Бэтчера, четно-нечетного слияния, а также сортировки слиянием списков можно найти в монографии [1], там же приведен анализ соответствующих алгоритмов, необходимые доказательства и оценка объема выполняемых алгоритмами действий.
Будем предполагать, что p используемых процессоров имеют номера от 0 до p -1. Будем предполагать, что в начале исходный массив распределен по процессорам некоторыми порциями Для простоты изложения будем также предполагать, что p =2 r, где r – натуральное число. Рассмотрим параллельных алгоритма сортировки массивов на основе метода сдваивания. Параллельный алгоритм сортировки массива на основе метода сдваивания состоит из двух этапов: 1) на каждом из процессоров с помощью алгоритма пирамидальной сортировки сортируется фрагмент массива i A длинной pA n i =. При этом, для простоты анализа, будем предполагать, что n = vp, где v - целое неотрицательное число. 2) элементы отсортированных на первом этапе фрагментов i A упорядочиваются с помощью слияния, причем последовательность слияний определяется методом сдваивания (Рис. 3). Задание В соответствии с вариантом задания написать программу реализации параллельного алгоритма. Запустить программу на узле, затем на сервере с небольшим объемом входных данных и убедиться, что она работает. После проверки запустить программу на сгенерированном случайным образом объеме входных данных, указанном в варианте, замерить время выполнения на одном процессоре, затем на числе процессоров, указанном в варианте. · Изучить программу генерации файла с исходным массивом данных.
Варианты
Содержание отчета · Описать алгоритм задачи согласно предложенному варианту. · Подготовка исходных данных в файле. · Текст параллельной программы на языке С. · Результаты запуска программы на одном узле, время выполнения, результат работы. · Результаты запуска программы на нескольких узлах, время выполнения, результат работы. · Рекомендации по улучшению быстродействия программы, выводы.
Дата добавления: 2014-12-26; Просмотров: 2219; Нарушение авторских прав?; Мы поможем в написании вашей работы! |