MPICH
MPICH (MPI Chameleon) — безкоштовна реалізація MPI яка підтримує роботу на великому числі платформ із різними комунікаційними інтерфейсами, у тому числі і з TCP/IP. Створена в Арагонській національній лабораторії (США). Існують версії цієї бібліотеки для всіх популярних операційних систем.
Версії | 3.4.2 (28 травня 2021)[1] |
---|---|
Репозиторій | github.com/pmodels/mpich |
Мова програмування | C[2] |
Ліцензія | MPICH2 licensed |
Вебсайт | mpich.org |
Основні особливості MPICH v 1.2.2
- повна сумісність зі специфікацією MPI-1;
- наявність інтерфейсу в стилі MPI-2 з функціями для мови C++ зі специфікації MPI-1;
- наявність інтерфейсу з процедурами мови FORTRAN-77/90;
- є реалізація для Windows NT (несумісна з UNIX-реалізацією);
- підтримка великого числа архітектур, у тому числі кластерів, SMP тощо;
- часткова підтримка MPI-2;
- часткова підтримка паралельного вводу-виводу — ROMIO;
- наявність засобів трасування і протоколювання (SLOG-based);
- наявність засобів візуалізації продуктивності паралельних програм (upshot і jumpshot);
- наявність у складі MPICH тестів продуктивності і перевірки функціонування системи.
Недоліки MPICH — неможливість запуску процесів під час роботи програми і відсутність засобів моніторингу поточного стану системи.
До складу MPICH входять бібліотечні і заголовні файли, що реалізують біля сотні підпрограм.
Принципи роботи MPICH
Розглянемо MPICH для Windows яка містить в собі такі компоненти :
- Менеджер процесів
smpd.exe
, який представляє собою системну службу (сервісну програму). Менеджер процесів веде список обчислювальних вузлів системи, і запускає на цих вузлах MPI-програми, надаючи ним необхідну інформацію для роботи і обміну повідомленнями. - Заголовні файли (
.h
) і бібліотеки стадії компіляції (.lib
), необхідні для розробки MPI-програм. - Бібліотеки часу виконання (DLL), необхідні для роботи MPI-програм.
- Додаткові утиліти (
.exe
), необхідні для налаштування MPICH і запуску MPI-програм.
Менеджер процесів є основним компонентом, який повинен бути встановлений і налаштований на всіх комп'ютерах мережі. Інші файли потрібні для розробки MPI-програм і налаштування «головного» комп'ютера, з якого буде виконуватися їх запуск.
Менеджер працює у фоновому режимі і чекає на запит до його з мережі з боку «головного» менеджера процесів (типово використовується мережевий порт 8676). Для захисту від хакерів і вірусів, менеджер просить пароль при зверненні до нього. Коли один менеджер процесів звертається до іншого менеджера процесів, він передає йому свій пароль. Звідси слідує, що потрібно вказувати один і той самий пароль при встановленні MPICH на комп'ютери мережі.
MPI-програма працює таким чином :
- Програма запускається і ініціалізує бібліотеку часу виконання MPICH шляхом виклику функції
MPI_Init
. - Бібліотека отримує від менеджера процесів інформацію про кількість і розташування інших процесів програми, і встановлює з ними зв'язок.
- Після цього запущені копії програми можуть обмінюватися один з одним інформацією за допомогою бібліотеки MPICH. З точки зору операційної системи бібліотека є частиною програми, тому можна вважати що запущені копії MPI-програми обмінюються даними напряму одна з одною.
- Консольний ввід-вивід всіх процесів MPI-програми перенаправляються на консоль, на якій запущена Mpirun. Перенаправленням вводу-виводу займаються менеджери процесів, так як вони запустили копії MPI-програми, і тому можуть отримати доступ до потоків введення-виведення програм.
- Перед завершенням всі процеси викликають функцію
MPI_Finalize
, яка коректно завершує передавання і отримання всіх повідомлень, і відключає MPICH.
Всі описані вище принципи діють, навіть якщо MPI-програму запущено на одному комп'ютері.
Див. також
- Open MPI — інша популярна реалізація MPI з відкритим кодом.