MPICH (MPI Chameleon) — безкоштовна реалізація MPI яка підтримує роботу на великому числі платформ із різними комунікаційними інтерфейсами, у тому числі і з TCP/IP. Створена в Арагонській національній лабораторії (США). Існують версії цієї бібліотеки для всіх популярних операційних систем.
Основні особливості 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-програму запущено на одному комп'ютері.
Див. також — інша популярна реалізація MPI з відкритим кодом.
Джерела
Посилання Домашня сторінка MPICH2