MPICH (сокр. от ) — одна из самых первых разработанных библиотек MPI. На её базе было создано большое количество других библиотек как открытых, так и коммерческих.
До ноября 2012 года существовали две ветви исходных кодов: MPICH1MPICH1 реализовавшая стандарт MPI-1.1 и MPICH2.MPICH2 поддерживавшая MPI1 и MPI2 Разработка ветви MPICH1 заморожена. Ветвь MPICH2 активно разрабатывается в Аргоннской национальной лаборатории СШАСайт Аргоннской национальной лаборатории , с участием компаний IBM, Cray, SiCortex, Microsoft, Intel, NetEffect, Qlogic, Myricom, UBC, а также Университета штата Огайо. Начиная с релиза в ноябре 2012 проект MPICH2 был переименован обратно в "MPICH", но уже версии 3.0. Начиная с этой версии объявлена полная поддержка стандарта MPI-3.
MPICH2
MPICH2 — легкопереносимая быстрая реализация стандарта MPI. Отличительные особенности: Поддерживает различные вычислительные и коммуникационные платформы, включая общедоступные кластеры (настольные системы, системы с общей памятью, многоядерные архитектуры), высокоскоростные сети (Ethernet 10 Гбит/с, InfiniBand, Myrinet, Quadrics) и эксклюзивные вычислительные системы (Blue Gene, Cray, SiCortex). Модульная структура для создания производных реализаций, предоставляющая широкие возможности для исследования технологии MPI.
Примеры программ
Ниже приведены примеры программ с использованием библиотеки MPICH:
Fortran
В этой программе на языке Fortran каждый из созданных потоков на вычислительном кластере выводит свой номер и приветствие: program hello include 'mpif.h' integer rank, size, ierror, tag, status(MPI_STATUS_SIZE)
call MPI_INIT(ierror) call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierror) call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierror) print*, 'node', rank, ': Hello world' call MPI_FINALIZE(ierror) end Для компиляции и запуска этой программы на 5 узлах нужно выполнить 2 команды: mpif90 -o exe_f mpi_f.f mpiexec -l -n 5 ./exe_f Будет выведено нечто вроде: 1: node 1 : Hello world 2: node 2 : Hello world 3: node 3 : Hello world 0: node 0 : Hello world 4: node 4 : Hello world
C
В этой программе на языке C каждый из созданных потоков на вычислительном кластере выводит свой номер и приветствие: #include <stdio.h> #include <mpi.h>
int main (int argc, char* argv[]) { int rank, size;
MPI_Init (&argc, &argv); MPI_Comm_rank (MPI_COMM_WORLD, &rank); MPI_Comm_size (MPI_COMM_WORLD, &size);
printf( "Hello world from process %d of %d\n", rank, size );
MPI_Finalize();
return 0; } Для компиляции и запуска этой программы на 5 узлах нужно выполнить 2 команды: mpicc -o exe_c mpi_c.c mpiexec -l -n 5 ./exe_c Будет выведено нечто вроде: 0: Hello world from process 0 of 5 1: Hello world from process 1 of 5 3: Hello world from process 3 of 5 2: Hello world from process 2 of 5 4: Hello world from process 4 of 5
См. также
OpenMP — технология программирования многопоточных приложений на многопроцессорных системах. OpenMPI — библиотека проекта объединения технологий и ресурсов ряда других проектов реализации MPI (FT-MPI, LA-MPI, LAM/MPI и PACX-MPI). Сторонние разработки, основанные на MPICH: MPICH-GM MVAPICH MVICH (в настоящее время разработка прекращена) Intel MPI HP MPI Voltaire MPI
Примечания
Ссылки
Домашняя страница MPICH2 Вики Аргоннской лаборатории Описание MPICH, установка и настройка MPICH в Windows Использование MPICH с Freepascal
Категория:Параллельные вычисления Категория:Свободные библиотеки программ Категория:Статьи с примерами кода на Фортране