MPICH | это... Что такое MPICH? (original) (raw)

MPICH2

Тип Программное обеспечение для обмена сообщениями между вычислительными процессами
Написана на C, C++, Fortran, FreePascal
Операционная система Universal Mac OS X, Linux, Unix, Windows
Языки интерфейса C, C++, Fortran
Последняя версия 1.5 (2 сентября 2012)
Тестовая версия 3.0rc1 (13 ноября 2012)
Лицензия нет
Сайт www.mcs.anl.gov

MPICH (англ. «Message Passing Interface Chameleon») — это одна из самых первых разработанных библиотек MPI. На её базе было создано большое количество других библиотек как OpenSource, так и коммерческих. В настоящее время существует две ветви исходных кодов: MPICH1[1] и MPICH2[2]. Разработка ветви MPICH1 заморожена. Ветвь MPICH2 активно разрабатывается в Арагонской лаборатории[3], с участием IBM, Cray, SiCortex, Microsoft, Intel, NetEffect, Qlogic, Myricom, Ohio state university, UBC.

Содержание

MPICH2

MPICH2 — легко портируемая быстрая реализация стандарта 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

Примечания

  1. MPICH1 реализуют стандарт MPI-1.1
  2. MPICH2 поддерживает MPI1 и MPI2
  3. Сайт Арагонской Национальной Лаборатории (англ.)

Ссылки

Просмотр этого шаблона Параллельные вычисления
Общие положения Облачные вычисления · Высокопроизводительные вычисления · Кластерные вычисления · Распределённые вычисления · Грид-вычисления · Гибридные вычисления
Уровни паралеллизма Биты · Инструкции · Данные · Задачи
Поток выполнения Суперпоточность · Гиперпоточность
Теория Закон Амдала · Закон Густавсона — Барсиса · Эффективность затрат · Метрика Карпа-Флэтта · Замедление · Коэффициент ускорения
Элементы Процесс · Поток · Файбер · ПМПД · Instruction window
Взаимодействие Многопроцессорность · Многопоточность · Когерентность памяти · Когерентность кэша · Недействительность кэша · Барьер · Синхронизация · Контрольная точка
Программирование Модели (Скрытый паралеллизм · Явный паралеллизм · Параллелизм) · Таксономия Флинна (SISDSIMDMISDMIMD (SPMD)) · Поток · Неблокирующая синхронизация
Компьютерная техника Мультипроцессорность (Симметричная · Асимметричная) · Память (NUMA · COMA · Распределённая · Разделяемая · Распределённая разделяемая) · Одновременная многопоточность MPP · Суперскалярность · Векторный процессор · Суперкомпьютер · Beowulf
API Ateji PX · POSIX Threads · OpenMP · OpenHMPP · PVM · MPI · UPC · Intel Threading Building Blocks · Boost · Global Arrays · Charm++ · Cilk · Co-array Fortran · OpenCL · CUDA · Stream · Dryad · DryadLINQ
Проблемы Затруднительное распараллеливание · Проблемы Великого Вызова · Блокировка ПО · Масштабируемость · Состояние гонки · Взаимная блокировка · Активный тупик · Детерминированный алгоритм · Параллельное замедление