Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

8654

.pdf
Скачиваний:
0
Добавлен:
25.11.2023
Размер:
1.77 Mб
Скачать

ПРИЛОЖЕНИЕ 3. Порядок определения доступных вычислительных узлов

спомощью утилиты WMPICONFIG

1.Запустите утилиту WMPICONFIG, входящую в пакет MPICH2 (Пуск – Все программы – MPICH2 – wmpiconfig.exe). В открывшейся форме в поле Domain введите имя рабочей группы / компьютерного класса (например, 2-111), компьютеры которого планируется проверить на доступность и нажмите кнопку Get Hosts. В нижнем окне отобразится список компьютеров указанной рабочей группы / компьютерного класса.

2.Для определения доступных для использования вычислительных узлов необходимо нажать кнопку Scan Hosts. После чего имена доступных компьютеров окрасятся в зелёный цвет, а недоступных – в серый цвет (рис. П3.1).

Рис. П3.1. Список доступных вычислительных узлов

ПРИЛОЖЕНИЕ 4. Сводный перечень некоторых MPI-функций

MPI-функция

Пояснение

 

int MPI_Init ( int *agrc, char ***argv )

Инициализация

MPI

 

 

 

программ

 

 

int MPI_Finalize (void)

 

Завершение

 

MPI

 

 

 

программ

 

 

int MPI_Comm_size (MPI_Comm comm, int *size

Определение

 

 

),

 

 

количества процессов в

где

 

 

выполняемой

 

- comm - коммуникатор, в рамках которого

параллельной

 

выполняется передача данных,

программе

 

 

- size – переменная, в которую возвращается

 

 

 

значение функции

 

 

 

 

 

int MPI_Comm_rank (MPI_Comm comm, int *rank

Определение

ранга

),

 

 

процесса

 

 

где

 

 

 

 

 

- rank – переменная, в которую возвращается

 

 

 

значение функции

 

 

 

 

 

double MPI_Wtime(void)

 

Получение

времени

 

 

 

текущего

момента

 

 

 

выполнения программы

int MPI_Send(void *buf, int count, MPI_Datatype

Парная

операция

type, int dest, int tag, MPI_Comm comm),

передачи сообщения от

где

 

 

одного

процесса

- buf – адрес буфера памяти, в котором

другому

 

 

располагаются

данные

отправляемого

 

 

 

сообщения,

 

 

 

 

 

- count – количество элементов данных в

 

 

 

сообщении,

 

 

 

 

 

- type - тип элементов данных пересылаемого

 

 

 

сообщения,

 

 

 

 

 

- dest - ранг процесса, которому отправляется

 

 

 

сообщение,

 

 

 

 

 

- tag - значение-тег, используемое для

 

 

 

идентификации сообщений,

 

 

 

 

- comm - коммуникатор, в рамках которого

 

 

 

выполняется передача данных.

 

 

 

int MPI_Recv(void *buf, int count, MPI_Datatype

Парная

операция

type, int source, int tag,

MPI_Comm comm,

приёма

сообщения

MPI_Status *status),

 

 

одним процессом

от

где

 

 

другого

 

 

- buf, count, type – буфер памяти для приема

 

 

 

сообщения, назначение соответствует описанию

 

 

 

в MPI_Send (),

 

 

 

 

 

- source - ранг процесса, от которого должен

 

 

 

быть выполнен прием сообщения,

 

 

 

 

- tag - тег сообщения, которое должно быть

 

 

 

принято для процесса,

 

 

 

 

 

- comm - коммуникатор, в рамках которого

 

 

 

выполняется передача данных,

 

 

 

 

- status – указатель на структуру данных с

 

 

 

информацией

о

результате

выполнения

 

 

 

операции приема данных

 

 

 

 

int MPI_Bcast(void *buf, int count, MPI_Datatype

Коллективная операция

type, int root, MPI_Comm comm),

 

передачи

данных

от

где

 

 

 

одного процесса

всем

- buf, count, type – буфер памяти с отправляемым

процессам программы

сообщением (для процесса с рангом 0), и для

 

 

 

приема сообщений для всех остальных

 

 

 

процессов,

 

 

 

 

 

 

- root - ранг процесса, выполняющего рассылку

 

 

 

данных,

 

 

 

 

 

 

- comm - коммуникатор, в рамках которого

 

 

 

выполняется передача данных

 

 

 

 

int MPI_Reduce(void *sendbuf, void *recvbuf, int

Коллективная операция

count, MPI_Datatype type, MPI_Op op, int root,

передачи

данных

от

MPI_Comm comm),

 

 

всех процессов одному

где

 

 

 

процессу

 

 

-sendbuf - буфер памяти с отправляемым сообщением,

-recvbuf – буфер памяти для результирующего сообщения (только для процесса с рангом root),

-count - количество элементов в сообщениях,

-type – тип элементов сообщений,

-op - операция, которая должна быть выполнена над данными,

-root - ранг процесса, на котором должен быть получен результат,

-comm - коммуникатор, в рамках которого выполняется операция

int

MPI_Sendrecv(void

*sbuf,int

scount,

Коллективная операция

MPI_Datatype stype, int dest, int stag, void *rbuf,

одновременного

int rcount, MPI_Datatype rtype, int source, int rtag,

выполнение передачи и

MPI_Comm comm, MPI_Status *status),

 

приема

где

 

 

 

 

- sbuf, scount, stype, dest, stag - параметры

 

передаваемого сообщения,

 

 

 

- rbuf, rcount, rtype, source, rtag - параметры

 

принимаемого сообщения,

 

 

 

- comm - коммуникатор, в рамках которого

 

 

 

выполняется передача данных,

 

 

 

 

 

- status – структура данных с информацией о

 

 

 

результате выполнения операции

 

 

 

 

 

int

MPI_Scatter(void

*sbuf,

int

scount,

Коллективная операция

MPI_Datatype

stype,

void

*rbuf,

int

rcount,

обобщенной

передача

MPI_Datatype rtype, int root, MPI_Comm comm),

данных

от

одного

где

 

 

 

 

 

 

процесса

 

всем

- sbuf, scount, stype - параметры передаваемого

процессам

 

 

сообщения (scount определяет количество

 

 

 

элементов, передаваемых на каждый процесс),

 

 

 

- rbuf, rcount, rtype - параметры сообщения,

 

 

 

принимаемого в процессах,

 

 

 

 

 

 

- root – ранг процесса, выполняющего рассылку

 

 

 

данных,

 

 

 

 

 

 

 

 

- comm - коммуникатор, в рамках которого

 

 

 

выполняется передача данных

 

 

 

 

 

int

MPI_Gather(void

*sbuf,

int

scount,

Коллективная операция

MPI_Datatype

stype,

void

*rbuf,int

rcount,

обобщенной

передачи

MPI_Datatype rtype, int root, MPI_Comm comm),

данных

от

всех

где

 

 

 

 

 

 

процессов

 

одному

-sbuf, scount, stype - параметры передаваемого процессу сообщения,

-rbuf, rcount, rtype - параметры принимаемого сообщения,

-root – ранг процесса, выполняющего сбор

данных,

 

 

 

 

 

- comm - коммуникатор, в рамках которого

 

 

 

выполняется передача данных

 

 

 

 

 

int MPI_Allgather(void *sbuf,

int

scount,

Коллективная операция

MPI_Datatype stype, void *rbuf,

int

rcount,

обобщенной

 

передачи

MPI_Datatype rtype, MPI_Comm comm)

 

данных

от

всех

 

 

 

процессов

 

одному

 

 

 

процессу (сбора) и

 

 

 

последующей рассылки

 

 

 

от одного

 

процесса

 

 

 

всем процессам

int MPI_Barrier(MPI_Comm comm)

 

 

Коллективная операции

 

 

 

синхронизации

Список рекомендованной литературы

1.The Message Passing Interface (MPI) standard [Электронный ресурс]. - Режим доступа: http://www.mcs.anl.gov/mpi.

2.Кластерные установки России и СНГ [Электронный ресурс]. - Режим

доступа: http://parallel.ru/parallel/russia/russian_clusters.html.

3.Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. СПб.: БХВПетербург, 2002. - 608 с.

4.Антонов А.С. Параллельное программирование с использованием технологии MPI: Учебное пособие. – М.: Изд-во МГУ, 2004. – 71 с.

5.Немнюгин С.А., Стесик О.Л. Параллельное программирование для многопроцессорных вычислительных систем с использованием MPI. СПб.: БХВПетербург, 2002.

Кислицын Дмитрий Игоревич

ОСНОВЫ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ MPI

Учебно-методическое пособие

по выполнению лабораторных работ для обучающихся по дисциплине «Основы параллельных вычислений для систем с распределённой памятью» по направлению подготовки 09.03.02 Информационные системы и технологии, без профиля

Федеральное государственное бюджетное образовательное учреждение высшего образования «Нижегородский государственный архитектурно-строительный университет»

603950, Нижний Новгород, ул. Ильинская, 65. http://www.nngasu.ru, srec@nngasu.ru

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