MPICH

MPICH2
Тип Программное обеспечение для обмена сообщениями между вычислительными процессами
Написана на C, C++, Fortran, FreePascal
Операционные системы Universal Mac OS X, Linux, Unix, Windows
Языки интерфейса C, C++, Fortran
Последняя версия
Тестовая версия 3.2b3[2] (4 июня 2015)
Репозиторий github.com/pmodels/mpich
Лицензия BSD-like
Сайт mcs.anl.gov/research/pro…

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. Release 5.0.1 — 2026.
  2. MPICH 3.2b3 released. Дата обращения: 22 июня 2015. Архивировано 22 июня 2015 года.
  3. MPICH1 реализовавшая стандарт MPI-1.1
  4. MPICH2 поддерживавшая MPI1 и MPI2
  5. Сайт Аргоннской национальной лаборатории Архивная копия от 3 мая 2010 на Wayback Machine  (англ.)

Ссылки

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.