У вас вопросы?
У нас ответы:) SamZan.net

Тема- введення в MPI

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 7.3.2025

Лабораторна робота №4

Тема: введення в MPI.

Мета роботи: навчитися компiлювати i запускати на виконання паралельнi програми, що використовують бiблiотеку MPI.

   Теоретичнi відомості

               Введення

Одним з практичних втiлень моделi передачi повiдомлень є специфiкацiя, що отримала назву «Iнтерфейс передачi повiдомлень», або, англiйською, Message Passing InterfaceMPI.

Iснує декiлька безплатних реалiзацiй MPI, зокрема WMPI, LAM i MPICH2. Розглянемо використання MPI на прикладi бiблiотеки WMPI.

Пiдключення WMPI

Припустимо, що бiблiотека встановлена в каталог c:\student\wmpi. Цей каталог буде мiстити пiдкаталоги, наведенi в табл. 4.1.

Табл. 4.1.

Пiдкаталоги бiблiтеки WMPI

Каталог

Змiст

include

файли заголовкiв для програм на C

lib

бiблiотечнi файли

lib\console

бiблiотечнi файли для консольних додаткiв

system

допомiжнi системнi файли

За допомогою бiблiотеки MPI можна створювати як консольнi, так i графiчнi програми для Windows. Для того, щоб додати в консольний додаток бiблiотеку MPI, необхiдно в IDE Visual C++ виконати наступнi дiї:

  1.  У дiалозi «Project Settings» на вкладцi «C/C++» у категорiї «Code Generation» у списку «Use run-time library» вибрати пункт «Multithreaded DLL».
  2.  Додати в проект файли cvwmpi.lib ( що знаходиться в каталозi c:\student\wmpi\lib\console) i vwmpi.rc ( що знаходиться в каталозi c:\student\wmpi\include\resource).
  3.  У категорiї «Preprocessor» у редакторi «Additional include directories» вказати шлях до заголовних файлiв бiблiотеки MPI, наприклад, c:\student\wmpi\include.

При стартi паралельна програма шукає спецiальний файл (так званий procgroup file). У цьому файлi зазначенi всi процеси програми. Цей файл можна вказати такими способами:

  1.  За допомогою параметру командного рядку -p4pg procgroup_file.
  2.  За допомогою файлу, iм’я якого збiгається з iм’ям програми, а розширення «.pg».
  3.  За допомогою файлу «procgrp».

Procgroup file є звичайним текстовим файлом, у якому в кожнiм рядку описується група однотипних процесiв. Приклад файлу:

local 2

speed.dei.uc.pt 2 c:\wmpi\examples\prog.exe

Цей файл описує п’ять процесiв: один процес запускається безпосередньо при виклику програми; на основi цiєї ж програми запускаються два додаткових процеси; два процеси запускаються за допомогою програми prog.exe на комп’ютерi speed.dei.uc.pt.

Основи MPI

Однiєю з особливостей MPI є поняття областi взаємодiї (областi зв’язку). Область взаємодiї визначає групу процесiв. Всi процеси, що належать однiй областi зв’язку можуть обмiнюватись повiдомленнями. Для опису областi взаємодiї застосовується iнформацiйна структура, що має назву комунiкатора. Комунiкатор описує контекст комунiкацiї для операцiй обмiну.

Кожен контекст визначає окрему область взаємодiї. Повiдомлення приймаються лише в тому контекстi, в якому були вiдправленi. В MPI iснує кiлька комунiкаторiв, що створюються автоматично, зокрема, комунiкатор MPI_COMM_WORLD — визначає всi процеси даної програми. Це значення комунiкатора застосовується за замовченням. Кожен процес в областi взаємодiї отримує цiлий додатній номер. Номер процеса називається рангом. Ранг використовується для вказiвки конкретного процесу, наприклад при пересиланнi повiдомлення. Як правило, процес з рангом 0 вважається головним.

Прототипи MPI-функцiй знаходяться в файлi mpi.h. Всi функцiї MPI (окрiм MPI_Wtime та MPI_Wtick) в якостi результата повертають код помилки, що виникла, або MPI_SUCCESS, якщо операцiя заершилась без помилок.

Першою MPI-функцiєю, що викликає кожна MPI-програма, є MPI_Init, яка має наступний прототип:

int   MPI_Init( int   argc ,  char  ∗∗∗argv)

В якостi своїх аргументiв функцiя приймає адреси аргументiв функцiї main. Функцiя виконує iнiцiалiзацiю MPI, зокрема, створює комунiкатор MPI_COMM_WORLD. Пiсля виконання всiх операцiй програма має викликати функцiю MPI_Finalize, що має наступний формат:        int   MPI_Finalize ( )

Функцiя видаляє структури даних MPI i виконує iншi дiї для деiнiцiалiзацiї бiблiотеки. Пiсля виклику цiєї функцiї виклики iнших функцiї MPI забороненi.

Також майже кожна MPI-програма викликає функцiї MPI_Comm_size та MPI_Comm_rank. Перша з них має наступний прототип:

int   MPI_Comm_size(MPI_Comm comm,   int    size )

Функцiя повертає розмiр областi зв’язку, яка описана комунiкатором comm. Друга, з прототипом:

int  MPI_Comm_rank(MPI_Comm comm,   int   rank )

визначає ранг процесу, що її викликав.

В лiстiнгу 4.1 наведено варiант класичної програми «Hello, world!». Лiстiнг 4.1. Програма «Hello, MPI!»

/   File   lab1.c  /

#include <stdio . h>

#include <mpi .h>

int   main( int   argc ,   char  argv [] )

{

int  me,   size ;

MPI_Init(&argc ,  &argv ) ; MPI_Comm_size(MPI_COMM_WORLD,  &size ) ; MPI_Comm_rank(MPI_COMM_WORLD,  &me) ;

printf ( " Hello ,  MPI !  me=%d ,   size=%d\n" ,  me, size);   MPI_Finalize ( ) ;

return   0;

} /   int  main ( int   argc ,   char  argv[ ])   /

Файл lab1.pg мiстить один рядок: «local 2». Результат роботи програми наступний:

Hello,   MPI!  me=0, size=3

Hello,   MPI!  me=2, size=3

Hello,   MPI!  me=1, size=3

Завдання

  1.  Виконати програму в лiстiнгу 4.1.
  2.  Розробити паралельну програму що складається з чотирьох процесiв. Усi процеси повиннi вивести на екран свiй номер; головний процес також повинний вивести рядок «Hello, C!», процес з номером 2 — рядок «Hello, MPI!».

Контрольнi питання

  1.  Що таке MPI?
  2.  Яким образом пiдключається бiблiотека MPI до проекту програми?
  3.  Що розумiють пiд областю зв’язку?
  4.  Якi функцiї виконують iнiцiалiзацiю бiблiотеки MPI? її закриття? одержання iнформацiї про паралельну програму?




1. Вариант 16 Выполни
2. контрольна робота 1 з дисципліни Сучасна теорія управління Варіант 2 Виконав-
3. Исследование и совершенствование функционирования системы управления г Новосибирска на примере швейного предприятия
4. ознакомить студентов с соцми экми политми культурными этническими процессами протекавшими на терии Ка
5. Основы финансов предприятий
6. 00 Drummperformnce в исполнении Юрия Попова 18
7. действительно имевшей место преступности
8. Управление предприятием ООО.html
9. ЗАБОЛЕВАНИЕ ЩИТОВИДНОЙ ЖЕЛЕЗЫ
10. Лабораторная работа 9