© Георгиевский Анатолий, 12.11.2005

Задание 3: Тестирование производительности сети

Чтобы измерить производительность сети нужно заставить компьютеры интенсивно обмениваться сообщениями. Задача состоит в том, чтобы измерить характер задержек в сети и выяснить, как задержки соотносятся с производительностью систем. Для выполнения задания необходимо создать шаблон MPI-программы на основе графа, реализовать логику переходов на языке С. Нужно построить ряд зависимостей времени передачи сообщения от размера сообщения.

Картинка иллюстрирует процесс обмена сообщениями между N процессами. Если каждый процесс дожидается сообщения от предыдушего, то задержка каждого процесса между циклами будет равняться суммарной задержке (Т*N).

На рисунке цикл бесконечный, а нам надо реализовать логику запуска и остановки цикла. Запускать должен первый процесс. Останавливать цикл, наверное, никакой процесс не должен, каждый процесс отсчитывает одинаковое количество сообщений. Последнее сообщение отсылает тоже первый процесс, поскольку в первом цикле он не участвует.

#include "mpi.h"
#include <stdio.h>
int main(int argc, char * argv[]){
int proc_id, num_proc;
	MPI_Init(&argc, &argv);
	MPI_Comm_size(MPI_COMM_WORLD, &num_proc);
	MPI_Comm_rank(MPI_COMM_WORLD, &proc_id);
// ...

	if(proc_id==0){
		MPI_Send(MPI_COMM_WORLD,, next);
	}

	for (count=0;count< ;count++ ){
		Delay = -MPI_Wtime();
		MPI_Recv(MPI_COMM_WORLD,, prev)
		MPI_Send(MPI_COMM_WORLD,, next)
		Delay+=  MPI_Wtime();
	}
	
	if(proc_id==1){
		MPI_Recv(MPI_COMM_WORLD,, 1);
	}

	printf ("Hello, MPI! Process %u of %u\n", 
				proc_id, num_proc);

	MPI_Finalize();
	return 0;
}

Доделать пример и выложить графики зависимости задержки от размера пакета для разных систем.

(12 ноября 2005 г.)