Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Double MPI_Wtime();



Функция возвращает время в секундах, прошедшее с некоторого момента в прошлом.

Для определения времени вычислений выполним:

double tn, tk, delfaf;

tn=MPI_Wtime();

//вычислительный блок

tk=MPI_Wtime();

delfaf=tk-tn;


4. Функции работы с коммуникатором: MPI_Comm_size(), MPI_Comm_rank().

Функция определения общего числа процессов

int MPI_Comm_size(MPI_Comm comm, int *size);

MPI_Comm comm - идентификатор коммуникатора группы

int *size - адрес переменной целого типа, в которую будет записан размер группы

Процесс, обратившийся к данной функции по адресу size запишет размер группы с коммуникатором comm. Функция возвращает код ошибки или 0 в случае успешного завершения.

Функция определения уникального номера процесса

int MPI_Comm_rank(MPI_comm comm, int *rank);

MPI_comm comm - идентификатор коммуникатора группы

int *rank - указатель на переменную целого типа, в которую будет сохранен уникальный номер процесса.

Процесс, обратившийся к данной функции в переменную rank запишет свой собственный уникальный номер в группе с коммуникатором comm. Функция возвращает код ошибки или в случае успешного завершения.

Пример 1

Каждый процесс должен записать в свой файл свой номер и общее число процессов

#include <stdio.h>
#include <mpi.h>

int main(int argc, char**argv)

{
int rank, size;
if (MPI_Init(&argc, &argv)) return 1;
if (MPI_Comm_size(MPI_COMM_WORLD, &size)){
MPI_Finalize();
return 2;
}
if (MPI_Comm_rank(MPI_COMM_WORLD, &rank)){
MPI_Finalize();
return 3;
}
char name[10];
sprintf(name, “rank%d.dat”, rank);
FILE *f;
f = fopen(name, “w”);
fprintf(f, “size=%d rank=%d\n”, size, rank);
fclose(f);
MPI_Finalize();
return 0;
}


5. Функции коллективного взаимодействия процессов: MPI_Bcast(), MPI_Barrier(), MPI_Reduce(),MPI_Allreduce(),(), MPI_Scan(),. Коллективные операции.

Функция широковещательного обмена

int MPI_Bcast(void *buf, int count, MPI_Datatype type, int root, MPI_Comm comm);

void *buf - указатель на переменную или массив откуда будет считываться/куда будет записано сообщение

int count - количество элементов в передаваемом/принимаемом сообщении

MPI_Datatype type - тип элементов в передаваемом/принимаемом сообщении в терминологии MPI

int root - идентификатор процесса, который будет передавать сообщение

MPI_Comm comm - идентификатор коммуникатора группы

Функция указывается для всех процессов коммуникатора. Процесс, обратившийся к данной функции, сравнивает свой номер с параметром root, если root=rank, то этот процесс передает сообщение всем остальным процессам и себе тоже. Все остальные процессы, номер которых не совпал с root, принимают сообщение.

Функция синхронизации





Дата публикования: 2015-02-03; Прочитано: 1014 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...