Научная статья на тему 'Параллельные алгоритмы сортировки данных с использованием технологии MPI'

Параллельные алгоритмы сортировки данных с использованием технологии MPI Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
831
92
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ / ИНТЕРФЕЙС ПЕРЕДАЧИ СООБЩЕНИЙ / АЛГОРИТМЫ СОРТИРОВКИ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Мартынов Василий Александрович, Миронов Владимир Валерьевич

В работе решается задача оптимизации стандартных сортировок с помощью технологии MPI. Используется модель приема-передачи сообщений, являющаяся одной из самых популярных моделей программирования в MPI. Для проведения численных экспериментов написано приложение на языке программирования C++. В работе приведены результаты численного моделирования сортировки данных в параллельном режиме.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Параллельные алгоритмы сортировки данных с использованием технологии MPI»

Вестник, Сыктывкарского университета. Уер.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

i Надоели баннеры? Вы всегда можете отключить рекламу.