MPICH

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
MPICH2
Тип

Программное обеспечение для обмена сообщениями между вычислительными процессами

Написана на

C, C++, Fortran, FreePascal

Операционная система

Universal Mac OS X, Linux, Unix, Windows

Языки интерфейса

C, C++, Fortran

Последняя версия

3.1.4 (23 февраля 2015)[1]

Тестовая версия

3.2b3[2] (4 июня 2015)

Лицензия

BSD-like

Сайт

mcs.anl.gov/research/projects/mpich2/

MPICH (сокр. от англ. «Message Passing Interface CHameleon») — одна из самых первых разработанных библиотек MPI. На её базе было создано большое количество других библиотек как открытых, так и коммерческих.

До ноября 2012 года существовали две ветви исходных кодов: MPICH1[3] и MPICH2.[4] Разработка ветви MPICH1 заморожена. Ветвь MPICH2 активно разрабатывается в Аргоннской национальной лаборатории США[5], с участием компаний 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

См. также[править | править вики-текст]

Сторонние разработки, основанные на MPICH
  • MPICH-GM
  • MVAPICH
  • MVICH (в настоящее время разработка прекращена)
  • Intel MPI
  • HP MPI
  • Voltaire MPI

Примечания[править | править вики-текст]

  1. http://www.mpich.org/2015/02/23/mpich-3-1-4-released/
  2. MPICH 3.2b3 released
  3. MPICH1 реализовавшая стандарт MPI-1.1
  4. MPICH2 поддерживавшая MPI1 и MPI2
  5. Сайт Аргоннской национальной лаборатории  (англ.)

Ссылки[править | править вики-текст]