MPICH (MPI Chameleon) — безкоштовна реалізація MPI яка підтримує роботу на великому числі платформ із різними комунікаційними інтерфейсами, у тому числі і з TCP/IP. Створена в Арагонській національній лабораторії (США). Існують версії цієї бібліотеки для всіх популярних операційних систем.

MPICH
Мова програмування C[1]
Ліцензія MPICH2 licensed
Репозиторій github.com/pmodels/mpich
Вебсайт 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-програма працює таким чином :

  1. Програма запускається і ініціалізує бібліотеку часу виконання MPICH шляхом виклику функціїMPI_Init.
  2. Бібліотека отримує від менеджера процесів інформацію про кількість і розташування інших процесів програми, і встановлює з ними зв'язок.
  3. Після цього запущені копії програми можуть обмінюватися один з одним інформацією за допомогою бібліотеки MPICH. З точки зору операційної системи бібліотека є частиною програми, тому можна вважати що запущені копії MPI-програми обмінюються даними напряму одна з одною.
  4. Консольний ввід-вивід всіх процесів MPI-програми перенаправляються на консоль, на якій запущена Mpirun. Перенаправленням вводу-виводу займаються менеджери процесів, так як вони запустили копії MPI-програми, і тому можуть отримати доступ до потоків введення-виведення програм.
  5. Перед завершенням всі процеси викликають функцію MPI_Finalize, яка коректно завершує передавання і отримання всіх повідомлень, і відключає MPICH.

Всі описані вище принципи діють, навіть якщо MPI-програму запущено на одному комп'ютері.

Див. також ред.

  • Open MPI[en] — інша популярна реалізація MPI з відкритим кодом.

Джерела ред.

Посилання ред.