|
Краткая информация
Имя файла |
network_test |
Краткое описание |
Тестирует многопроцессорную систему на предмет задержек при передаче данных между процессорами |
Формат вызова |
network_test <список параметров> |
Тестирование коммуникационной среды
Тесты производительности коммуникационной среды измеряют время передачи сообщений между MPI-нитями в секундах. Измеряются не только секунды, но и доли секунд с точностью предоставляемой функцией MPI_Wtime. Результаты измерений формируют матрицу размерности NxN, где N — число задействованных MPI-нитей, элемент (i, j) матрицы соответствует времени передачи сообщения от i-ой нити к j-ой. Для каждой длины сообщения тест «прогоняется» некоторое количество раз (оно может задаваться как параметр программы), а затем берется среднее арифметическое по этим значениям, - это делается для большей точности измерений. По способу передачи сообщений между процессорами существует несколько разновидностей тестов:
- all_to_all — тест основан на одновременной неблокированной передаче данных от каждого к каждому и предназначен для выяснения «стрессоустойчивости» сети. По идее, должен вызывать множество коллизий в коммуникационной среде. Измеряется время между инициализацией неблокированного приёма MPI_Irecv() и соответствующем ему MPI_Waitany(). Данное значение вносится в матрицу, соответствующую тестируемой длине сообщения в позицию (i, j), где j — принимающая нить, i — нить, из которой было отправлено сообщение
- one_to_one — тест, производящий блокированную передачу от i-ой нити к j-ой. Во время передачи данных остальные нити (кроме i-ой и j-ой) «молчат». Измеряется время исполнения функции MPI_Recv(), после чего это время считается временем передачи сообщения от i-ой нити к j-ой. Такая передача производится для всех нитей, то есть i и j пробегают значения от 1 до n , где n — число задействованных процессов. Исключение составляет ситуация, когда i = j, в этом случае в матрицу записывается 0. При помощи данного теста можно определить пропускную способность каналов связи между процессорами (машинами) при условии, что в сети при этом нет посторонних передач данных, которые могут влиять на производительность сети
- async_one_to_one — тест, осуществляющий неблокированный обмен MPI-сообщениями навстречу друг другу между i-ой и j-ой нитью. Два процесса одновременно вызывают MPI_Isend(), затем с обеих сторон одновременно инициируется MPI_Irecv() и MPI_Waitany(). После выполнения MPI_Waitany() i-ой нитью измеряется время. Разница между измеренным временем и моментом инициализации соответствующего неблокированного приёма сообщения вносится как время передачи от j-ой нити к i-ой. При помощи рассмотренного теста можно определить, является ли канал между двумя процессорами полнодуплексным. Если канал полудуплексный, то полученные результаты будет в 2 (и более) раза меньше, чем результаты, полученные при помощи теста one_to_one
- send_recv_and_recv_send — тест, предназначенный для выяснения усредненной производительности обменов в коммуникационной среде многопроцессорной системы. Блокированное сообщение передаётся от i-ой нити к j-ой, а затем сразу ретранслируется обратно от j-ой к i-ой. Время измеряется между первой отправкой сообщения и получением ответа обратно. После этого оно оно делится на 2 и в таком виде вносится в матрицу как время передачи от i-ой MPI-нити к j-ой.
|
|