This text is in Windows (1251) encoding. Инструкция по использованию системы тестов MPI Лаборатория параллельных информационных технологий НИВЦ МГУ Центр тестирования суперкомпьютерных систем для контактов: support@parallel.ru ИЗМЕНЕНИЯ ========= 8 июля 2003 года - добавлен тест NFSTEST/MPI (директория nfstest) - в директории doc добавлены описания в формате HTML на русском языке - модифицирован тест NETTEST, добавлены несколько параметров 31 марта 2003 года - Файл runall перемещен в директорию scripts, добавлены вспомогательные скрипты runtask-mpirun, runtask-mpimon, runtask-qs, частично изменен механизм запуска задач и соответствующие настройки - Содержания файлов README.txt из поддиректорий вставлены в этот файл Добавлен коротенький файл README-en на английском - исправлена ошибка в transf4.c, когда тест подвисал при запуске более чем на 2 процессорах (из-за барьера) 28 марта 2003 года - filetest выделен из этого набора тестов в отдельный тест - введен файл настроек компиляции config/make.def (как в NPB 2.3) 29 мая 2001 года transfer: - добавлена возможность изменения номера головного процесса (опция H) 4 декабря 2000 года transfer: - вставлена проверка на случай нулевого времени 29 ноября 2000 года transfer: - вставлена простая проверка корректности обменов (флаг testcorrectness) - вставлена возможность прогона всего задания несколько раз (repeat, 'R') - добавлена возможность автоматического подбора числа итераций (флаг f) КРАТКОЕ ОПИСАНИЕ ТЕСТОВ ======================= Более подробную информацию об этих тестах можно найти html-файлах в поддиректории doc. Общие требования тестов: компилятор языка С, утилита make (желательно GNU make), оболочка bash, реализация MPI, скрипт mpicc для компиляции MPI-программ. Для запуска тестов необходимо понимать общий механизм запуска MPI-программ на данной системе КОМПИЛЯЦИЯ ========== Предварительно необходимо распаковать архив с помощью команды unzip mpi-bench-suite.zip Каждый тест располагается в своем каталоге, который соответствует его имени. В корневом каталоге расположен файл 'Makefile', который осуществляет компиляцию всех тестов и запуск которого осуществляется командой make. Большинство параметров компиляции и сборки тестов собраны в файле config/make.def, который включается директивой include в файлы 'Makefile' в директориях отдельных тестов. Что может потребоваться изменить? - Имя скрипта для компиляции MPI-программ в файле make.def: MPICC = <имя скрипта> На большинстве платформ существует такой скрипт, который называется mpicc, он вызывает обычный компилятор С, но при компиляции он подставляет путь к заголовочным файлам, а при линковке подставляет библиотеки MPI. В некоторых параллельных средах такой скрипт отсутствует, в этом случае надо составить его самостоятельно или обратится к администратору системы. В директории scripts доступен пример такого скрипта для среды Scali SPP и компиляторов Intel (это модифицированный скрипт пакета MPICH, используемый на одном из кластеров в НИВЦ МГУ). Если на тестируемой системе установлены несколько реализаций MPI, Может понадобиться установка правильного пути к mpicc в пользовательской переменной PATH (чтобы уточнить этот путь, нужно обратиться к администратору тестируемоей системы). - Таймер по умолчанию используется MPI_Wtime(), но на некоторых системах для точного измерения очень быстрых операций может понадобиться альтернативный таймер. Таким таймером может служить любая функция, аналогичная MPI_Wtime(), которая возвращает в качестве числа типа double время в секундах от некоторого фиксированного момента времени в прошлом. Чтобы назначить такую функцию в качестве таймера, нужно найти в исходном коде теста строку #define Wtime MPI_Wtime и изменить MPI_Wtime на имя функции-таймера. В некоторых нестандартных средах может понадобится дополнительное редактирование файлов 'Makefile' для каждого из тестов. После компиляции исполняемый файлы тестов копируются в каталог "bin". Если компиляция прошла успешно, в этом каталоге должны находится файлы: transf1 transf2 transf3 transf4 transf5 nettest mpitest nfstest ЗАПУСК ТЕСТОВ ============= Запуск тестов с параметрами по умолчанию осуществляется командой make RUN или скриптом runall в каталоге scripts. Если параметры по умолчанию не устраивают или тесты с этими параметрами не запускаются, может понадобится редактирование файла runall или ручной запуск тестов. Комментарии к параметрам в файле runall: Директория, где распакован пакет тестов MPIBENCH_HOME=/home/alex/benchmarks/MPI-Suite Число MPI-процессов по умолчанию NNODES='4' Число повторов каждого теста REPEAT=R3 Номер головного процесса в тестах HEAD=H0 Условное название "серии экспериментов" SERIES='sci-run1' Директория, где находятся исполняемые файлы тестов BINDIR=../bin Директория и/или имя файла, куда будут записаны исполняемые файлы Внимание! Если запускаются через систему очередей, то рекомендуется оставлять пустым значение OUTPUT, но создавать отдельную директорию для каждой новой серии экспериментов! OUTPUT="o${SERIES}.dat" OUTDIR=../res #OUTDIR=../res/${SERIES} Скрипт, который запускает MPI-задачу средствами, которые доступны в данной программно-аппаратной среде. Первый параметр этого скрипта-число процессов, остальные - MPI-задача со своими параметрами RUNTASK=../scripts/runtask-mpimon В директории scripts содержатся готовые скрипты для запуска задач в средах Scali SPP, MPICH и через систему очередей НИВЦ МГУ. Для других параллельных сред может понадобится составить аналогичный скрипт. Параметры тестов. За описанием параметров отдельных тестов следует обратиться к их подробным описаниям (см. ниже подразделы этого документа или benchmarks.doc). Параметр o, общий для всех тестов, позволяет выводить результаты в файл, выбранный пользователем, вместо распечатки их на экран. Если тест завершается очень быстро, то возникает вероятность большой погрешности в измерении времени и может потребоваться увеличение числа итераций (параметр T<число итераций>). ======================================== MPI Transfer Test Тест скорости межпроцессорных обменов ======================================== Файлы test_shell.c - тестовая оболочка transf1.c ... transf5.c - тестовые процедуры для различных тестов - способов организации обмена. При компиляции для каждого из тестов создается отдельный исполняемый файл. Тест 1 - однонаправленные обмены Тест 2 - двунаправленные обмены через MPI_Sendrecv Тест 3 - двунаправленные обмены через неблокирующие вызовы MPI_Isend/MPI_Irecv Тест 4 - двунаправленные обмены с использованием MPI_Rsend Тест 5 - двунаправленные обмены с использованием persistent requests Makefile - make-скрипт для компиляции в среде UNIX (MPICH) После компиляции появляются 5 отдельных исполняемых файлов transf1 ... transf5 ======================================== Параметры командной строки m<размер> M<размер> стартовый (минимальный) и конечный (максимальный) размеры сообщения msglen ("m0" позволяет измерить латентность) s<приращение> задает приращение размера сообщения K<коэффициент> размер сообщения будет изменяться в геометрической прогрессии с указанным коэффициентом T<число> каждая тестовая процедура будет повторяться указанное число итераций для большей точности имеет смысл увеличить число итераций, особенно в случае небольших сообщений R<число> число повторений всего теста Ptime / Prate Выбирает режим вывода результатов - время (в микросекундах) или скорость (в MB/sec, по умолчанию). quiet (q1) Удаляет из выдачи служебную информацию (печатаются только результаты) o<имя файла> результаты теста будут выведены в указанный файл ======================================== Запуск и результаты mpirun -np N transfM <опции> N - число процессов M - номер теста Результаты выдаются в виде двух колонок: размер сообщения в байтах и соответствующее ему значение скорости обменов в MB/sec. Для нулевого размера сообщения выдается значение латентности в микросекундах. Например: Size Transfer (MB/sec) Latency: 250 microseconds 1024 3.906 2048 3.906 3072 5.859 При запуске теста с числом процессов больше 2, будет выведена скорость обменов процесса 0 со всеми остальными. ======================================== Пример mpirun -np 2 transf2 m1 M1024 K2 T1000 R3 otransfer.dat Будет запущен тест двунаправленных пересылок для размеров сообщений 1, 2, 4, 8 ... 1024 байт, причем для каждого размера тест будет повторяться 1000 раз, а результаты будут выведены в файл "transfer.dat". весь тест будет повторен 3 раза MPI Operations Test Тест эффективности основных операций MPI ======================================== Файлы mpitest.c - исходный текст на С Makefile - make-скрипт для компиляции в среде UNIX (MPICH) ======================================== Параметры командной строки - T<число> t<число> Число итераций теста для "длинных" и "быстрых" операций. - R<число> Число повторений всего теста - o<имя файла> Можно задать файл для записи результатов - m<число>, M<число> Задает размер вектора в целых числах. Рекомендуется от 1 до 10000. - K<число> Параметр геометрической прогрессии. Рекомендуется 2 или 10. ======================================== Запуск и результаты mpirun -np N mpitest <аргументы> N - число процессов (рекомендуется 4 или более)