- MPICH
-
MPICH2 Тип Программное обеспечение для обмена сообщениями между вычислительными процессами
Написана на Операционная система Языки интерфейса Последняя версия 1.5 (2 сентября 2012)
Тестовая версия 3.0rc1 (13 ноября 2012)
Лицензия нет
Сайт 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. Отличительные особенности:
- Поддерживает различные вычислительные и коммуникационные платформы, включая общедоступные кластеры (настольные системы, системы с общей памятью, многоядерные архитектуры), высокоскоростные сети (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
См. также
- MPI (Message_Passing_Interface) — интерфейс обмена сообщений между процессами.
- OpenMP — технология программирования многопоточных приложений на многопроцессорных системах.
- OpenMPI — библиотека проекта объединения технологий и ресурсов ряда других проектов реализации MPI (FT-MPI, LA-MPI, LAM/MPI и PACX-MPI).
- Сторонние разработки, основанные на MPICH
- MPICH-GM
- MVAPICH
- MVICH (В настоящее время разработка прекращена)
- Intel MPI
- HP MPI
- Voltaire MPI
Примечания
- ↑ MPICH1 реализуют стандарт MPI-1.1
- ↑ MPICH2 поддерживает MPI1 и MPI2
- ↑ Сайт Арагонской Национальной Лаборатории (англ.)
Ссылки
- Домашняя страница MPICH2. (англ.)
- (Wiki) Арагонская лаборатория (англ.)
- Описание MPICH, установка и настройка MPICH в Windows
- Использование MPICH с Freepascal
Параллельные вычисления Общие положения Облачные вычисления · Высокопроизводительные вычисления · Кластерные вычисления · Распределённые вычисления · Грид-вычисления · Гибридные вычисления Уровни паралеллизма Биты · Инструкции · Данные · Задачи Поток выполнения Суперпоточность · Гиперпоточность Теория Закон Амдала · Закон Густавсона — Барсиса · Эффективность затрат · Метрика Карпа-Флэтта · Замедление · Коэффициент ускорения Элементы Процесс · Поток · Файбер · ПМПД · Instruction window Взаимодействие Многопроцессорность · Многопоточность · Когерентность памяти · Когерентность кэша · Недействительность кэша · Барьер · Синхронизация · Контрольная точка Программирование Модели (Скрытый паралеллизм · Явный паралеллизм · Параллелизм) · Таксономия Флинна (SISD • SIMD • MISD • MIMD (SPMD)) · Поток · Неблокирующая синхронизация Компьютерная техника Мультипроцессорность (Симметричная · Асимметричная) · Память (NUMA · COMA · Распределённая · Разделяемая · Распределённая разделяемая) · Одновременная многопоточность
MPP · Суперскалярность · Векторный процессор · Суперкомпьютер · BeowulfAPI 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 Проблемы Затруднительное распараллеливание · Проблемы Великого Вызова · Блокировка ПО · Масштабируемость · Состояние гонки · Взаимная блокировка · Активный тупик · Детерминированный алгоритм · Параллельное замедление Категории:- Программное обеспечение по алфавиту
- Параллельные вычисления
- Свободные библиотеки программ
Wikimedia Foundation. 2010.