ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
114
Время DB на операцию синхронизации вычисляется так:
MPI_Barrier(comm);
t1 = MPI_Wtime();
MPI_Barrier(comm);
t2 = MPI_Wtime();
DB = t2 - t1 - DT;
Все остальные замеры времени осуществляются по следующей схеме:
производится синхронизация с помощью MPI_Barrier;
замеряется текущее время
t
1
;
исполняются вызовы MPI, относящиеся к тестируемой конструкции;
снова производится барьерная синхронизация;
замеряется текущее время
t
2
;
время, затраченное на исполнение тестируемой конструкции, вычисляется
как
t = t
2
-
t
1
-
DT
-
DB
.
С целью минимизации погрешности эта процедура повторяется несколько раз.
Величина
t
усредняется по всем итерациям
Параметры теста
np
(number of processes) - параметр mpirun, число запускаемых процессов;
m
(minimum) и
M
(Maximum) - наименьшая и наибольшая длина массива
данных, с которым будут оперировать тестовые процедуры, задается в це-
лых числах;
K
(coeficient) - множитель для увеличения длины сообщения (обычно ис-
пользуются значения 2 или 10);
R
(repeat) - число глобальных повторов (итераций) всего теста;
T
и
t
(Times) - число итераций в каждой тестовой процедуре для "продол-
жительных" и "быстрых" тестовых операций. "Быстрыми" операциями счи-
таются: замер времени, барьер, посылка сигнала (измерение латентности).
Очевидно, что для более точного измерения следует увеличить число ите-
раций;
b
(buffer) - размер в байтах буфера, выделяемого для обеспечения пересы-
лок; по умолчанию, размер буфера составляет 16 Мбайт;
o
(output) - имя файла, в который будут печататься результаты (по умолча-
нию, результаты печатаются на терминал).
Пример запуска:
mpirun -np 4 mpitest m1 M100 K10 T100 t100000 R2 otransfer.dat
1...,106,107,108,109,110,111,112,113,114,115 117,118,119,120,121,122,123,124,125,126,...180