Вестник, Сыктывкарского университета. Уер.1. \Вып. 16.2012
[УДК 681.3
ПАРАЛЛЕЛЬНЫЕ АЛГОРИТМЫ СОРТИРОВКИ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ MPI
В. А. Мартынов, В. В. \Миронов
В работе решается радача оптимизации ртандартных рорти-ровок с ромощью технологии IMPT. Используется модель рриема-рередачи Сообщений, [являющаяся одной из самых популярных моделей программирования в МРТ. Для рроведения численных [экспериментов написано приложение на нзыке ррограммирова-иия [C++. В работе рриведены результаты численного [моделирования рортировки данных в рараллельном режиме.
Ключевые, слова: рараллельное ррограммирование, [интерфейс
рередачи сообщений, алгоритмы рортировки.
1, Объектом рсследования [данной работы ¡являются [традиционные алгоритмы рортировки числовых массивов. Рортировка данных - ррак-тически важная и [теоретически рнтересная [задача, т.к. рортировка больших Ьбъемов данных - неотъемлимая процедура рри Обработке информации в базах данных, прикладных [задачах Вычислительной математики и щх Что же ка,с,а,етс,я разработки алгоритмов, то [здесь рроцесс рортировки также очень ражен, т.к. рортировка является Существенной частью многих алгоритмов. В связи с бурным ростом Ьбъемов обраба-тываемой информации и появлением новых параллельных архитектур компьютеров и сред ррограммирования возникает потребность в разработке алгоритмов рортировки данных, адаптированных род вти архитектуры и рреды программирования.
Рассмотрим наиболее известные алгоритмы рортировки с релью их дальнейшей оптимизации для исиользовалия на рараллельных ЭВМ.
Рортировка пузырьком [bubblesort) или рортировка ¡простыми обменами - простой ¡алгоритм сортировки, состоящий из повторяющихся рроходов по сортируемому массиву. За, каждый рроход элементы по-рледовательно сравниваются попарно р^ если рорядок в pape Неверный,
(с) Мартынов Б. [А^ ¡Миронов IL В.. 12012.
выполняется ререстановка элементов. Проходы по массиву ровторяют-ся Ж — 1 раз {N - длина массива) или до тех pop, пока на, рчередном рроходе не ркажется, что элементы массива [уже ртсортированы. Сложность алгоритма сортировки - ()( .Vі).
Данный алгоритм является Учебным и ррактически не ррименяется вне Учебной дитературы. Вместо него применяются более (эффективные алгоритмы рортировки. В то іже рремя метод рортировки Ьбменами иежпт в основе некоторых более совершенных алгоритмов, таких как шейкерная рортировка, пирамидальная рортировка и быстрая горіи-ровка.
Рортировка Шелла, [Shellsort) - алгоритм рортировки являющийся усовершенствованным рариантом алгоритма рортировки вставками. Идея мс1 ода состоит в рравнении элементов, ртоящих не только рядом, но и на рекотором расстоянии друг от друга. Иными словами - это рортировка вставками с рредварительными [,грубыми“ проходами.
При рортировке Шелла, сначала, рравниваются и рортируются элементы, ртстоящие друг от друга на рекотором расстоянии <7 друг от друга. После этого рроцедура ровторяется для рекоторых меньших вна-ченіііі сL Заканчивается рроцедура рри </ — 1 [т.е. Ьбычной рроцедуров [вставками). [Эффективность сортировки ТТТелла в определенных случаях Ьбеспечивается [тем, что элементы „быстрее“ встают на свои места.
Сроднее рремя работы алгоритма зависит от длины рромежутков (I. Существует несколько подходов для выбора (I. Первоначальная ни-c. іе. юна и1, п.пос і ь ТТТелла - = [/У/2, (¿2 = = 1 дает слож-
ность алгоритма в [худшем случае p(iV2). Последовательности Хпббар-да If-) * Е ШІ2 Фибоначчи, а также значения |< Ц-, і Е N -
дают сложность алгоритма ТТТелла, О(.У-).
Рортировка вставками - простой алгоритм рортировки. Несмотря на, [го, что [данный алгоритм уступает в Эффективности более сложным алгоритмам, у него имеется ряд рреимуществ:
- Эффективен на Небольших наборах данных. На наборах данных до нескольких десятков может оказаться лучшим;
- эффективен на, Наборах данных, которые уже частично уже отсортированы;
- это [устойчивый алгоритм рортировки, гг.е. не изменяет порядок Элементов, роторые [уже отсортированы;
- может рортировать список по мере его ролучения.
руть алгоритма вставка,ми заключается в рледуютцем. На, [каждом шаге алгоритма выбирается один из элементов рходных данных и вставляется на ружную позицию в [уже ртсортированном списке, до тех пор,
пока, Набор рходных данных не |будет исчерпан. |Метод выбора очередного элемента из рсходного массива произволен. Рбычно, и с щелью ролучения устойчивого алгоритма рортировки, влементы вставляются ню порядку их появления во входном массиве. Временная сложность ал= горп I ма рортировки вставками рри худшем рарианте входных данных Q(iV2). ^
12* Рассмотрим теперь основные влементы технологии MPI. MPI (Message [Passing [Interface, интерфейс передачи Сообщений) |- программный интерфейс [API) для передачи Информации, [который ¡позволяет обмениваться сообщениями между рроцессами, рыполняющими рдну задачу.
Наиболее распространенной (технологией ррограммирования параллельных ¡компьютеров с распределенной памятью в растоящее время является MPI. Основным способом ¡взаимодействия рараллельных рро-цессов в таких системах является рередача Сообщений друг другу. Это и отражено в названии данной технологии - Message Passing Interface. Интерфейс поддерживает создание рараллельных ррограмм в стиле MTMD. что подразумевает Объединение процессов с различными исходными текстами. Рднако на, практике ррограммисты гораздо чаще рспользуют SPM Р-модель, в рамках которой для всех рараллельных рроцессов ¡используется рдин и тот же код.
Все дополнительные объекты: имена функций, константы, рредопре-деленные типы данных и т.п., Используемые в MPI, Имеют префикс MPI. Описания Интерфейса МРТ собраны в файле inpi.li. поэтому в начале MPI-программы должна стоять директива Include inpi.li .
Все функции передачи сообщений в MPI делятся на две группы. В рдну группу входят функции, которые предназначены для ¡взаимодействия двух рроцессов программы. Такие рперации называются индивидуальными или рперациями типа точка,-точка,, функции ¡другой ¡группы рредполагают, что в операцию должны быть вовлечены все рроцессы рекоторого ¡коммуникатора. [Такие рперации называются коллективны-ми.
MPI-программа - это множество рараллельных взаимодействующих рроцессов. Все процессы порождаются один раз, образуя рараллельную часть ррограммы. В ¡ходе выполнения ЛГРТ программы ророждение до-ролнитсльпых процессов или уничтожение существующих нс допускается, Каждый процесс работает в своем адресном рространстве, ника,ких Общих реременных или данных в МРТ нет. Основным Способом взаимодействия между рроцессами является явная посылка сообщений.
Для локализации взаимодействия параллельных процессов програм-
мы можно роздавать [группы рроцессов, предоставляя им ртдельную сроду для Общения - [коммуникатор. Состав Образуемых [групп пронз-волен. [Группы могу I полностью рходить одна в другую, не рересекать-ся или рересекаться частично. 11|>п ртарте ррограммы рсегда счита,ет-ря, нто все ророжденные рроцессы работают в рамках Всеобъемлющего роммуникатора. Этот роммуникатор руществует рсегда и рлужит для Взаимодействия всех рроцессов МР1-програм.мы.
Кажд.ый рроцесс |МР1-программы имеет [уникальный Атрибут ромер рроцесса, который является целым реотрицательиым числом. С помощью втого атрибута рроисходит [значительная часть взаимодействия рроцессов ¡между Ьобой. [Ясно, что в одном и том же коммуникаторе все процессы имеют различные номера. Но роскольку рроцесс может рдновременно рходить в разные роммуникаторы, то еш ромер в одном роммуникаторе может отличаться от его номера в другом. Отсюда становятся понятными два основных атрибута рроцесса: роммуникатор и ромер в роммуникаторе. Если группа родержит и рроцессов, то ромер [любого рроцесса в [данной группе лежит в пределах от D до п — L
Основным способом Общения рроцессов между собой является посылка рообщений. Сообщение - вто Вабор данных рекоторого типа. Каждое рообщение имеет не-сколько Атрибутов, в растности, ромер рроцесса-отправителя, ромер рроцесса-получателя, Идентификатор со-Общения и другие. Одним из важных атрибутов рообщения является его идентификатор или тэг. По Идентификатору рроцесс, Принимающий рообщение, рапример, может различить два рообщения, рришедшие к рему от рдного и того же процесса. Сам Идентификатор рообщения является релым неотрицательным числом, лежащим в диапазоне от 0 до 32767 [3].
3. Рассмотрим теперь ррограммные реализации алгоритмов рортировки для их [дальнейшего анализа, на возможность распараллеливания [1. |4|.
Код рроцедуры, реализующей рортировку рузырьками рредставлен ниже.
void BubbleSort [int £ount, int |*pArr) int trash=0;
for [int ¡=0: Kcount; j++) for [int j=0; j<count-l-i; j++) if(pArrp]>pArrp+l])
trash=pArrp]; ^Arr[j]=pArr[j+l]; ^Arr[j-|-l]=trash; \j [1)
Сортировка вставка,ми реализована в рледующем фрагменте рро-1 раммы.
void insertsort [Т* & Int size)
Œ tmp;
for [int [=L ]; ¡<size; j++) tmp=a[i];
for (j=i-l:j>=0 Ш ^Q1>tmp; j-) M0+l]=a[j1; l [2) aP+l]=tmp;
В рледующем фрагменте рредставлена реализация рортировки ТТТел-
иа.
void ShellSort (Т |ong size)
|ong Inc, i.j.seq [40]; int &
s=increment (seq.size); while (s>=0) inc=seq[s-]; for [i=inc;i,size;+-l-i)
Œ temp=a[i];
for [j=i-inc; (j>=0) brd (ap]>temp);j-=inc) ^p+inc]=ap]; \[ [3] ap1=temp;
[Как видно из представленных фрагменотов ррограмм итерации основных циклов рортировки данных являются Информационно [зависимыми [см. комментарии [1), (2), (3)) [2]. Таким рбразом, репосредственно распараллелитть итерации риклов по рроцессорам не рредставляется возможным.
Для реализации рдей Параллельной рортировки рредлагается Модификация алгоритмов по ¡методу крупноблочного распараллеливания, рараплель-ньтй ¡алгоритм сортировки состоит в выполнении рледующих этапов:
- Исходный массив длины и распределяется по \р рроцессорам вычислительной системы по блокам размера \п/р;
- каждый из процессов упорядочивает свой блок по рдному из рассмат-риваемых алгоритмов рортировки;
- ртсортированные блоки рередаются в ведущий рроцесс, рде рроисходит формирование рыходного ртсортированного массива.
Для численного моделирования был на,писал комплекс ррограмм, реализующий алгоритмы рортировки по методу [крупноблочного распараллелива-
ния [2]. результаты эксперимента приведены в [таблицах.
Таблица L Последовательная сортировка
N 1000 2500 7000 10000
bubblesort 1.12 3.22 B.34 12.97
insertsort 1.01 2.53 6.23 10.21
Kh ell sort 0.93 2.10 5.57 9.12
Таблица EL Параллельная сортировка
Ш 1000 2500 7000 10000
bubblesort 0.72 3.01 6.57 9.64
insertsort, 0.62 2.01 •1.3-1 В.21
Rhellsort 0.61 1.98 3.94 7.94
Вычисления из табл. 1 и [табл. 2 рроводились на, [параллельной ЭВМ для рлучая р = 1 в j) = 3 рроцессоров тоответствено. Как ридно из рредстав-[пенных таблиц ускорение [работы [параллельной ррограммы в зависимости пт метода рортировки в рреднем составила болсс ВО рроцентов, что рвидетель-ртвует о Высокой степени параллелизма разработанных алгоритмов.
Литература
1. Кнут [Д. EL [Искусство ррограммирования. Т. 6. Сортировка и поиск. М.: Изд-во Вильямс, В007. 800 с.
2. Воеводин В. В., Воеводин IB. В. Параллельные вычисления. С-116.: БХВ-Петербург, В002. Ш (L
3. [Антонов A, EL Рараллельное ррограммирование с использованием технологии IMPT. М. [Изд-во |МГУ, 2004 . 71 с.
■L Хьюз [К., Хьюз Т. [Параллельное и распределенное программирование с использованием C++. М.: Изд-во Вильямс, 2004. 345 с.
Summary
[Martynov ГУ. [A., Mironov IV. У. The problem bf the optimization of the ¡standard porting through technology MPT.
A Imodel Reception b.nd transmission of messages, kvhich Is one of the most popular programming [models In MPI. [For [numerical Experiments Written application In the programming language С + +. In [work results bf [numerical modeling to kort. da,ta, In parallel.
[Keywords: |;parallel programming, message passing interface, sorting Algorithms.
Сыктывкарский Государственный университет Преступила №0.12.2012