Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: LI Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 30 марта 2017 г.)

Наука: Информационные технологии

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Сахибназарова В.Б. ИССЛЕДОВАНИЕ ВОЗМОЖНОСТИ ПЕРЕДАЧИ СООБЩЕНИЙ МЕЖДУ УЗЛАМИ КОМПЬЮТЕРНОЙ СЕТИ С ПОМОЩЬЮ MPI // Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ: сб. ст. по мат. LI междунар. студ. науч.-практ. конф. № 3(50). URL: https://sibac.info/archive/technic/3(50).pdf (дата обращения: 29.03.2024)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

ИССЛЕДОВАНИЕ ВОЗМОЖНОСТИ ПЕРЕДАЧИ СООБЩЕНИЙ МЕЖДУ УЗЛАМИ КОМПЬЮТЕРНОЙ СЕТИ С ПОМОЩЬЮ MPI

Сахибназарова Виктория Бахтиёровна

студент магистратуры, факультет информатики СНИУ им. академика С.П. Королева,

РФ, г. Самара

В настоящее время сложно представить себе область деятельности человека, не включающую в себя, хоть в малой степени, необходимость обмена информацией по сети. Один из способов обеспечения передачи информации между компьютерами одной сети – использование MPI (Message Passing Interface) – программного интерфейса для передачи информации, позволяющего обмен сообщениями между процессами одного или нескольких узлов сети [2].

В данной работе происходит исследование зависимости времени передачи сообщений между компьютерами при использовании разных способов, предоставляемых MPI.

MPI предоставляет следующие функции для передачи сообщений [1]:

  • MPI_Send - функция передачи сообщения между двумя процессами;
  • MPI_Bcast - функция широковещательной рассылки данных (процесс-отправитель рассылает сообщение из своего буфера передачи всем процессам области связи коммуникатора);
  • MPI_Scatter - функция, разбивающая сообщение из буфера посылки на равные части и посылающая i-ю часть в буфер приема i-го процесса;
  • MPI_Gather - функция, производящая сборку блоков данных, посылаемых всеми процессами группы, в один массив процесса с номером указанным в параметрах функции.

В процессе исследования размер передаваемого сообщения варьируется от 0 до нескольких МВ. Также выбраны следующие способы передачи сообщений:

  1. Send (передача сообщений между двумя узлами);
  2. Send (передача сообщений между двумя процессами одного узла);
  3. Bcast (передача сообщений между несколькими узлами);
  4. Scatter (передача сообщений между несколькими узлами);
  5. Gather (передача сообщений между несколькими узлами).

Для способов 3,4 и 5 количество узлов изменяется от 2 до 4.

Время выполнения вариантов 1 и 2 сравнивается со временем копирования сообщения, а способов 3, 4 и 5 - со временем выполнения Send в цикле for.

Результирующие таблицы и соответствующий им графики будут иметь следующий вид:

 

Таблица 1.

Результаты измерений времени передачи сообщений функцией Send (способ 1 и 2).

Объем данных в МВ

0

1,90735

3,81470

5,72205

7,62940

9,536743

Длина массива

0

500000

1000000

1500000

2000000

2500000

передача на одном узле

26*10-7

0,00166

0,00329

0,00489

0,00667

0,008152

передача на двух узлах

282*10-7 

0,22692

0,40876

0,61160

0,83175

1,020722

копирование

2*10-7

0,00168

0,00325

0,00474

0,00637

0,008099

 

Рисунок 1. График зависимости времени передачи сообщения от объема данных.

 

Таблица 2.

Результаты измерений времени передачи сообщений функцией Bcast (способ 3).

Объем данных в МВ

0

1,907349

3,814697

5,722046

7,629395

9,536743

Длина массива

0

500000

1000000

1500000

2000000

2500000

количество узлов - 2

0,0000005

0,225822

0,427993

0,639329

0,871031

1,070251

количество узлов - 3

0,0000005

0,506295

1,020999

1,560224

2,033362

2,572404

количество узлов - 4

0,0000005

0,468035

0,870301

1,293671

1,612451

2,208533

 

 

Рисунок 2. График зависимости времени передачи сообщения от объема данных и количества узлов.

 

Таблица 3.

Сравнение результаты измерений времени передачи сообщений функцией Bcast (способ 3) со временем выполнения Send в цикле for.

Объем данных в МВ

0

1,90735

3,81470

5,722046

7,629395

9,536743

Длина массива

0

500000

1000000

1500000

2000000

2500000

Bcast 2

0,0000005

0,22582

0,42799

0,63933

0,87103

1,07025

Bcast 3

0,0000005

0,50629

1,02099

1,56022

2,03336

2,57240

Bcast 4

0,0000005

0,46804

0,87030

1,29367

1,61245

2,20853

For Send 2

0,000015

0,23187

0,37542

0,6223

0,91784

1,03596

For Send 3

0,000028

0,46773

0,88872

1,32622

1,87603

2,12046

For Send 4

0,002322

0,77403

1,21495

1,94917

2,49094

3,20553

 

Таблица 4.

Результаты измерений времени передачи сообщений функцией Scatter (способ 4) и сравнение со временем выполнения Send в цикле for.

Объем данных в МВ

0

1,90735

3,81470

5,72205

7,62940

9,53674

Длина массива

0

500000

1000000

1500000

2000000

2500000

Scatter 2

0,000022

0,09107

0,20014

0,29991

0,39540

0,53704

Scatter 3

0,000037

0,14653

0,28581

0,41819

0,55295

0,71734

Scatter 4

0,000030

0,15928

0,32267

0,48977

0,65959

0,81312

For Send 2

0,000013

0,10806

0,20681

0,32436

0,43856

0,53946

For Send 3

0,000027

0,14550

0,30395

0,42761

0,56355

0,70904

For Send 4

0,000283

0,179344

0,341004

0,507451

0,652628

0,825418

 

 

Рисунок 3. График зависимости времени передачи сообщения от объема данных и используемой функции для 2 узлов.

 

Таблица 5.

Результаты измерений времени передачи сообщений функцией Gather (способ 5) и сравнение со временем выполнения Send в цикле for.

Объем в МВ

0

1,90735

3,81470

5,72205

7,62940

9,53674

Длина массива

0

500000

1000000

1500000

2000000

2500000

Gather 2

0,000145

0,11067

0,20014

0,31001

0,40868

0,55197

Gather 3

0,000172

0,15381

0,27414

0,42541

0,57847

0,72735

Gather 4

0,000298

0,17376

0,31892

0,48113

0,64099

0,80066

For Send 2

0,000013

0,10806

0,20681

0,32436

0,43856

0,53946

For Send 3

0,0000274

0,14550

0,30395

0,42761

0,56355

0,70904

For Send 4

0,000283

0,17934

0,341004

0,507451

0,652628

0,825418

 

 

Рисунок 4. График зависимости времени передачи сообщения от объема данных и используемой функции для 4 узлов.

 

Как видно из приведенных выше рисунка 1 и таблицы 1 (для способов 1 и 2), при увеличении объема передаваемого сообщения растет и время его передачи, однако в случае передачи между двумя узлами время растет намного быстрее, чем в случае передачи между процессами одного узла или копировании.

Из таблиц 2 и 3, а так же рисунка 2, можно видеть, что выполнение функции Bcast для 3 узлов превышает по времени выполнение для 4 узлов; время выполнения Send в цикле for растет вместе с увеличением количества узлов, и при этом время пересылки сообщений с помощью Send для 4 узлов больше, чем время выполнения функции Bcast для того же количества узлов.

Из таблиц 4 и 5, и рисунков 3и 4 (способ 4 и 5) можно сделать вывод, что вне зависимости от количества узлов, вместе с увеличением объема передаваемого сообщения растет и время его передачи. При этом время выполнения функций Scatter и Send в цикле for практически одинаково, что позволяет менять одну функцию на другую без потерь времени.

 

Список литературы:

  1. Дацюк В.Н., Букатов А.А., Жегуло А.И. Методическое пособие по курсу "Многопроцессорные системы и параллельное программирование" [Электронный ресурс] / Режим доступа. — URL: http://rsusu1.rnd.runnet.ru/tutor/method/index.html (дата обращения 20.03.2017)
  2. Message Passing Interface [Электронный ресурс] / Режим доступа. — URL: https://ru.wikipedia.org/wiki/Message_Passing_Interface (дата обращения 20.03.2017)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.