Лекция: 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, принимают сообщение.

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

еще рефераты
Еще работы по информатике