©
Георгиевский Анатолий,
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;
}
Доделать пример и выложить графики зависимости задержки от размера пакета для разных систем.
()
|