Добро пожаловать на страничку семинаров по MPI. Здесь вы можете найти ссылки на документацию, скачать тексты задач, посмотреть на примеры программ и многое другое. Со всеми вопросами, касающимися работы сайта просьба обращатья по адресу: mpi@gorodok.net
Студентам настоятельно рекомендуется установить на доступной машине одну из библиотек MPI. Ссылки и инструкции по настройке и установке можно найти на этом сайте.
Ниже приведены ссылки задачи, задаваемые на семинаре.
Здесь собраны ссылки на ресурсы, содержащие документацию по MPI. В будущем планируется создать собственную документацию.
Лекция Воеводина на parallel.ru |
Глава книги Designing and Building Parallel Programs про MPI (англ.) |
Описания функций стандарта MPI (англ.) |
Ниже приведен пример наивной программы проверки числа на простоту.
Скачать исходный текст: prime.c |
#include "mpi.h" #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int numprocs, p, i, rank, r = 1, result; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); #ifdef INTERACTIVE if (!rank) fscanf(stdin, "%d", &p); #else p = rand() / (RAND_MAX / 10000); #endif MPI_Bcast(&p, 1, MPI_INT, 0, MPI_COMM_WORLD); if (p != 0 && rank < p / 2 - 1) for (i = 2 + rank * (p / 2 - 1) / numprocs; i < 2 + (rank + 1) * (p / 2 - 1) / numprocs; i++) { if (p % i == 0) { r = 0; break; } } MPI_Reduce(&r, &result, 1, MPI_INT, MPI_LAND, 0, MPI_COMM_WORLD); if (rank == 0) printf("%d is %sa prime.\n", p, result == 0 ? "not " : ""); MPI_Finalize(); return 0; }
Для написания программы с использованием MPI следует хорошо представлять модель распределения данных между различными ветвями исполнения программы.
Следует понимать, что все переменные, кроме тех, что инициализирутся статически (т.е конкретным значением, или детерминированным выражением), имеют потенциально разное значение в различных ветвях. Таким образом, если ваша задача — отсортировать массив, то нет необходимости полностью его генерировать в каждой из ветвей. Можно (в зависимости от алгоритма) либо сгенерировать массив в ветви 0, а затем разослать (MPI_Bcast) остальным ветвям, либо генерировать в каждой ветви некоторую часть массива, с которой данная ветвь будет работать.
Занятия на семинаре проходят с использованием терминального доступа к кластеру типа МВС-1000М по протоколу ssh. Кластер МВС-1000М, находящийся в Сибирском Суперкомпьютерном Центре, состоит из 16 вычислительных узлов и одного управляющего. Каждый вычислительный узел имеет два процессора Dec Alpha с тактовой частотой 866Мгц и 2Гбайта разделяемой памяти. Управляющий узел имеет один процессор. Все узлы разделяют между собой пользовательскую область файловой системы. Кластер работает под управлением ОС Red Hat Linux.
Кластер МВС-1000М Сибирского Суперкомпьютерного Центра доступен по адресу mvs1000.sscc.ru по протоколу ssh. Для доступа рекоммендуется свободные ssh-клиент putty и openssh.
Скачать ssh-клиент: putty.exe |
Здесь приведены ссылки на руководства пользователя и программиста МВС-1000М. Их прочтение настоятельно рекомендуется.
Руководство пользователя МВС-1000М |
Руководство программиста МВС-1000М |
MPICH — это свободная библиотека, реализующая стандарт MPI. Библиотека перенесена на многие платформы и поддерживает гетерогенные (неоднородные) кластеры, архитектуры с разделяемой памятью и т.д. Далее приводятся ссылки на пакеты с MPICH и инструкции по установке и настройке библиотеки для ОС Windows и UNIX-like операционных систем.
Скомпилированную библиотеку MPICH для Windows (MPICH.NT) можно скачать непосредственно с этого сайта.
Скачать MPICH.NT часть 1 |
Скачать MPICH.NT часть 2 |
Для UNIX-like систем доступны следующие пакеты
Скачать MPICH (исходные тексты) |
Ниже приводятся инструкции по настройке Visual Studio для использования библиотеки MPICH.NT.
1. Скачайте, распакуйте и установите MPICH.NT.
2. Добавьте MPICH.NT в пути для заголовков и библиотек.
3. В свойствах нового проекта следует указать использование библиотек MPICH.NT.
Для работы с MPI без кластера (это может быть одно- или многопроцессорная машина), необходимо установить MPICH собранный с коммуникациями через разделяемую память. Для Debian вам достаточно выполнить (от имени суперпользователя) комманду
$ apt-get install mpich-shmem-binНиже приводится общая инструкция по сборке MPICH с коммуникациями через разделяемую память из исходных текстов для Unix-like ОС.
1. Скачайте файл с исходными текстами MPICH и распакуйте архив.
Пользователи Debian GNU/Linux могут выполнить комманду
$ apt-get source mpich
2. Сконфигурируйте и скомпилируйте исходники mpich для сборки с поддержкой коммуникаций через разделяемую память. Для этого в директории с распакованным mpich нужно выполнить комманду:
$ ./configure --prefix=/usr/local/mpich --with-device=ch_shmem && make
3. Установите MPICH
# make install