Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
піро2.doc
Скачиваний:
25
Добавлен:
05.03.2016
Размер:
989.7 Кб
Скачать

43. Навести приклад найпростішої програми на мові с з використанням технології mpi, яка виводить прізвище студента

#include “mpi.h”

main (int argc, char ** argv)

{ int rank, size;

MPI_Status status;

MPI_Init (&argc, argv);

MPI_Comm_size (MPI_COMM_WORLD, & size);

MPI_Comm_rank(MPI_COMM_WORLD, & rank);

Printf (“……………….. in roces №%d,” rank);

MPI_Finalize ();

}

44 Описати процес компіляції і виконання програми засобами середовища OpenMpi та компілятора gcc.

Демон- программа, яка запускається на кожній машині, для звязку. Щоб запустити паралельну програму на МРІ : запускають демони;

Mpiexec [ключі]–n_програма

Для компіляції програми потрібно ввести команду:

mpicc program.c –o program –для С

mpiхх program.c –o program –для С++

При умові успішної компіляції, запустити програму командою:

mpirun –np X program

де X – кількість процесів вказана у завданні.

Запуск демонов

mpdbootn число_демонов [ключи]

Запуск параллельной программы

mpiexec [ключи] –n число имя_исполняемого файла

Завершение работы всех демонов

Mpdallexit

45.Навести необхідні функції mpi для ініціалізації і завершення mpi-коду програми.

Для того, щоб написати програму з використанням MPI потрібно прописати відповідний заголовок

#include "mpi.h"

Ініціалізація MPI відбувається так:

MPI_Init(&argc, &argv);

MPI_Comm_size(MPI_COMM_WORLD,&ProcNum); - отримує від MPI кількість запущених процесів

MPI_Comm_rank(MPI_COMM_WORLD,&ProcRank); - отримує значення процесу.

Далі йде програмний код.

Після написання програми в кінці потрібно написати

MPI_Finalize();

Для компіляції програми виконати:

Mpicc integr.c –o integr

Для виконання програми:

Mpirun –n <N> -hostfile <hostfile> ./integr

<N> - кіьлкість процесів

<Hostfile> - файл з DNS-іменами/IP-фдресами вузлів кластера

46Охарактеризувати поняття групи і комунікатора у технології mpi.

Група – це впорядкована велика кількість процесів. Кожному процесу в групі зіставлено ціле число – ранг або номер.

MPI_GROUP_EMPTY – пустая група, що не містить жодного процесу.

MPI_GROUP_NULL – значення, використовуване для помилкової групи.

Нові групи можна створювати як на основі вже існуючих груп, таки на основі комунікаторів, але в операціях обміну можуть використовуватися лише комунікатори. Базова група, з якої створюються всі інші руппи процесів, пов'язана з комунікатором MPI_COMM_WORLDу неї входять всі процеси додатка. Операції над групами процесів є локальними, до них залучається процес, що лише викликав процедуру, а виконання не вимагає міжпроцессного обміну даними. Будь-який процес може виробляти операції над будь-якими групами, у тому числі над такими, які не містять даний процес. При операціях над групами може вийти порожня група MPI_GROUP_EMPTY.

Комунікатор надає окремий контекст обміну процесів деякої групи. Контекст забезпечує можливість незалежних обмінів даними. Кожній групі процесів може відповідати декілька комунікаторів, але кожен комунікатор у будь-який момент часу однозначно відповідає лише одній групі. Наступні комунікатори створюються відразу після виклику процедури

MPI_INIT:

MPI_COMM_WORLD – комунікатор, об'єднуючий всі процеси додатку

MPI_COMM_NULL – значення, використовуване для помилкового комунікатора;

MPI_COMM_SELF – комунікатор, що включає лише викликаний процес. Створення комунікатора є колективною операцією і вимагає операції міжпроцессного обміну, тому такі процедури повинні викликатися всіма процесами деякого існуючого комунікатора.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]