Функции mpi
MPI_Init();
прототип функции
int MPI_Init (int #argc,char***argv);
Функция инициализирует параллельную часть программы. Может быть запущена только один раз. Использование всех параллельных функций возможно только после запуска этой функции MPI_Unit
Пример
Void main (int argc, char**argv){
MPI_Init (& argc, &argv);
}
Сложный вид аргументов функции MPI_Init связан с необходимостью передачи всем процессам аргументов командной строки.
MPI_Finalize ();
int MPI_Finalize ();
Завершает параллельную часть программы. После неё вызов параллельных функций недопустим. К моменту вызова функции MPI_Finalize на некотором процессе все параллельные функции на этом процессе должны быть завершены.
MPI_Comm_size ()
int MPI_Comm_size (MPI_Comm_comm, int * size)
MPI_Comm_comm – идентификатор коммутатора
int * size - количество процессоров в группе с идентификатором Comm.
Функция определяет число процессоров в группе с коммутатором Comm,
Например: int size
MPI_Comm_size (MPI_COMM_WORLD,& size)
MPI_Comm_rank();
int MPI_Comm_rank (MPI_Comm comm, int*rank);
MPI_Comm comm. – идентификатор коммуникатора
Int * rank – идентификатор процесса, вызывающего функцию. Принимает значения 0,…,size-1
Пример: пусть процессоры отзовутся и назовут себя.
#include <io Stream.h>
#include “mpi.h”
void main (int argc, char**argv) {
MPI_Init (& argc,&argv);
int size
MPI_Comm_Size (MPI_COMM_WORLD,& size)
int rank
MPI_Comm_rank (MPI_COMM_WORLD,& rank);
Cout <<”rank=”<<rank<<
“size=” <<size<<ende;
MPI_Finalize ();
Rank = 0 size = 5
Rank = 1 size = 5
Rank = 2 size = 5
Rank = 3 size = 5
Rank = 4 size = 5
Функция передачи и приёма данных с блокировкой
Функция приёма данных MPI_Recv ();
int MPI_Recv (void*buf; int count, MPI_Datatype Datatype; int source; int msgtag; MPI_Comm comm; MPI_Status *Status)
void*buf – адрес переменной куда будет записана полученная информация;
count – количество полученной информации;
MPI_Datatype Datatype – тип получаемой информации в терминологии MPI;
int source – идентификатор процесса отправителя;
int msgtag – идентификаотр сообщения;
MPI_Comm comm – идентификатор коммуникатора группы, которой принадлежат процессы;
MPI_Status *Status - указатель на структуру MPI_Status, куда записываются атрибуты полученного значения.
Функция MPI_Recv принимает сообщение с идентификатором msgtag от процессора с номером source с блокировкой. Количество принимаемой информации не должно превышать count. Если информации будет меньше count, гарантируется, что в buf будут изменены те элементы, которые соответствуют элементам принятого сообщения. Блокировка гарантирует, что после выхода из функции MPI_Recv сообщение будет принято и записано в buf.
Функции MPI_Recv можно указать вместо параметра source предопределенную константу MPI_ANY_SOURCE, т.е. подойдет сообщение от любого процесса. Вместо параметра msgtag – MPI_ANY_TAG, т.е. будет принято сообщение с любым идентификатором.
Реальные значения принятого сообщения доступны через поля структуры: MPI_Status status;
status.count;
status.MPI_SOURCE; //от кого принято сообщение
status.MPI_TAG; //идентификатор сообщения
status.MPI_ERROR;
Функция возвращает MPI_Success в случае удачи, иначе - код ошибки.
- Содержание курса
- Общие сведения.
- Топологии Виды топологий
- Программирование «Трубы»
- Программирование «Звезды»
- Программирование «Клика»
- Синхронный обмен данными
- Функции синхронного обмена данными
- Примеры:
- Задание 1:
- Задание 2:
- Задание 3:
- Асинхронный обмен данными
- Функции необходимые для асинхронного обмена данными
- Пример:
- Определение времени вычисления на Parsytec.
- Определение времени в программе
- Структура компьютера
- Константы, типы данных, структуры mpi
- Тип данных mpi_Datatype
- Предопределённые константы
- Сообщения
- Функции mpi
- Функция передачи данных с блокировкой
- Дополнительные функции
- Виды параллелизма Геометрический (распараллеливание по пространству)
- Функциональный (распараллеливание по процессам)
- Конвейерный
- Параллелизм типа принятия коллективного решения
- Ускорение и эффективность вычислений на мвс
- Метод Рунге-Кутта 4
- 2. Расчётные формулы:
- 3. Алгоритм распараллеливания.
- Метод прогноза коррекции
- 2. Расчётные формулы
- 3. Алгоритм распараллеливания.
- 4. Ускорение вычислений.
- 4. Ускорение и точность вычислений.
- Решение уравнений в частных производных
- Колебания мембраны
- 2. Расчетные формулы
- Решение стационарных уравнений на мвс
- 2. Расчётные формулы
- Алгоритм распараллеливания.
- Ускорение вычислений
- Оптимизация на мвс
- Расчётные формулы
- Алгоритм распараллеливания
- Ускорение вычислений.