Введение в MPI
Цель - изучить базовую структуру MPI-программ и способ их запуска на кластере.
Базовая структура MPI-программ предполагает обязательное применение функций
- MPI_Init,
- MPI_Comm_size,
- MPI_Comm_rank и
- MPI_Finalize.
Их использование представлено в примере ниже.
Компиляция MPI-программ осуществляется утилитами
- mpicc ( для программ, написанных на языке С), или
- mpiCC ( для программ, написанных на языке С++).
Эти утилиты являются надстройками над соответствующими компиляторами, установленными в рамках ОС.
Пример запуска MPI-программы на компиляцию:
mpiCC myprog.cpp -o myprog
Запуск оттранслированной программы на счет производится с помощью команды вида:
mpirun [параметры mpirun] <имя программы> [ входные параметры программы ]
Основными параметрами mpirun являются:
- -h | -help - показывает возможные аргументы и параметры команды mpirun
- - maxtime - задает максимальное время счета программы (в минутах)
- - np <число процессоров> - задает число процессоров, на которых запускается программа
Пример запуска
mpirun -np 4 -maxtime 5 myprog
Задача 1. Откомпилировать и выполнить программу, приведенную выше, задающую базовую структуру MPI-программ. Запустить программу на количестве процессоров от 1 до 4.
Задача 2. Написать и отладить MPI-программу, в которой корневой процесс (процесс с рангом 0) выдает на консоль количество запущенных процессов, а также сообщение
"Root process: Hello, world",
а все остальные процессы выдают сообщение
"Slave process: my rank is xxxx",
где xxx есть ранг соответствующего процесса.
Выполнить запуски программы на разном количестве процессоров.