КЛАСТЕР 

Назначение теста

Назначением теста MPITEST является выяснить эффективность реализации и выполнения некоторых базовых конструкций MPI в рамках тестируемого программно-аппаратного комплекса.


Тестируемые конструкции MPI

В начале опишем тестируемые конструкции MPI. Методика тестирования будет описана чуть ниже.

Условное название Описание
TIMING время на один замер времени
BARRIER барьерная синхронизация всех процессов
ALLREDUCE суммирование N целочисленных переменных по всем узлам с рассылкой результата по всем узлам
REDUCE суммирование N целочисленных переменных по всем узлам, результат на одном узле
BROADCAST рассылка N целочисленных значений с одного узла по всем узлам
GATHER сбор N целочисленных значений со всех процессов на один головной процесс; в результате, головной процесс принимает N*(np-1) целочисленных значений
ALLGATHER Каждый процесс посылает всем остальным N целочисленных значений; в результате, каждый процесс посылает N, а принимает N*(np-1) целочисленных значений; эту операцию можно реализовать как GATHER (сбор). а потом BCAST (рассылка).
ALL-TO-ALL Каждый процесс посылает каждому по N целочисленных значений; в результате, каждый процесс посылает и принимает по N*(np-1) целочисленных значений
ISEND & WAIT Неблокирующая посылка N целочисленных значений от одного процесса другому с ожиданием завершения
BLOCKING SEND блокирующая пересылка N целочисленных значений от одного процесса другому целочисленных значений
SENDRECV операция посылки и получения N целочисленных значений
SEND & RECV посылка, а затем получение N целочисленных значений
SIGNAL SENDING посылка сигнала, т.е. сообщения нулевой длины, и получение ответного сигнала (получаемое время должно примерно равняться удвоенной латентности)

Методика тестирования

Время DT на один замер времени вычисляется так:

t1 = MPI_Wtime();
t2 = MPI_Wtime();
DT = t2 - t1;

Время DB на операцию синхронизации вычисляется так:

MPI_Barrier(comm);
t1 = MPI_Wtime();
MPI_Barrier(comm);
t2 = MPI_Wtime();
DB = t2 - t1 - DT;

Все остальные замеры времени осуществляются по следующей схеме:

С целью минимизации погрешности эта процедура повторяется несколько раз. Величина t усредняется по всем итерациям.


Особенности реализации

Тест реализован в виде одного файла mpitest.c на языке Си.

Параметры теста

Пример запуска:

mpirun -np 4 mpitest m1 M100 K10 T100 t100000 R2 otransfer.dat

В данном случае, mpitest будет запущен на 4 процессорах (-np 4). Тест будет оперировать с массивами данных размером в 1, затем в 10 и 100 целых чисел (m1 M100 K10). Для "продолжительных" операций тестовая процедура будет повторяться 100 раз (T100), для "коротких" - 100 тыс. раз (t100000), с целью более точного измерения. Весь тест целиком будет повторен 2 раза (R2). Результаты будут печататься в файл transfer.dat в текущей директории (otransfer.dat).