- 5 -
Из реализаций MPI известны MPICH (все UNIX-системы и Windows'NT,
разработка Argonne National Lab.,
http://www.mcs.anl.gov), LAM (UNIX-
подобные ОС, Ohio Supercomputer Center,
http://www.osc.edu и Notre-Damme
University,
http://www.lsc.nd.edu), CHIMP/MPI (Edinburgh Parallel Computing
Centre,
http://www.epcc.ed.ac.uk), WMPI (все версии Windows, разработка Uni-
versity of Coimbra, Portugal,
http://dsg.dei.uc.pt/wmpi; в 2002 г. права перешли к
Critical Software SA,
wmpi-sales@criticalsoftware.com) и др. (подробнее см.
http://parallel.ru/mpi.html).
Основными отличиями стандарта MPI-2 являются: динамическое порож-
дение процессов, параллельный ввод/вывод, интерфейс для C++, расширен-
ные коллективные операции, возможность одностороннего взаимодействия
процессов (см. [1] и
http://www.mpi-forum.org). В настоящее время MPI-2 прак-
тически не используется; существующие реализации поддерживают только
MPI 1.1.
MPI является (довольно) низкоуровневым инструментом программиста; c
помощью MPI созданы рассчитанные на численные методы специализиро-
ванные библиотеки (например, включающая решение систем линейных урав-
нений, обращение матриц, ортогональные преобразования, поиск собствен-
ных значений и т.п. библиотеки ScaLAPACK,
http://www.netlib.org/scalapack и
AZTEC,
http://www.cs.sandia.gov/CRF/aztec1.html для плотнозаполненных и раз-
реженных матриц соответственно). MPI не обеспечивает механизмов задания
начального размещения процессов по вычислительным узлам (процессорам);
это должен явно задать программист или воспользоваться неким сторонним
механизмом.
Разработчики MPI (справедливо) подвергаются жесткой критике за излиш-
нюю громоздкость и сложность для реального (прикладного) программиста.
Интерфейс оказался сложным и для реализации;
в итоге в настоящее время
практически не существует реализаций MPI, в полной мере обеспечивающие
совмещение обменов с вычислениями. Проект MPI-2 выглядит еще более
громоздким и тяжелоподъемным для реализации в заявленной степени.
В состав функций MPI входят специальные вызовы для обработки исклю-
чительных ситуаций и отладки. Цель обработчиков состоит в выдаче пользо-
вателю (определенное
им же) сообщение об ошибке для принятия действий,
не относящиеся к MPI (напр., очистка буферов ввода/вывода) перед выходом
из программы. Реализация MPI допускает продолжение работы приложения
после возникновения ошибки.
Полномасштабная отладка MPI-программ достаточно сложна вследствие
одновременного исполнения нескольких программных ветвей (при этом тра-
диционная отладки методом включения в исходный текст операторов
печати
затруднена вследствие смешивания в файле выдачи информации от различ-
ных ветвей MPI-программы); одним из наиболее мощных отладчиков счита-
ется TotalView (
http://www.dolphinics.com). В функции подобных отладчиков
входит трассировка программы и профилирование – выдача (часто в графи-
ческом виде) информации об обменах в параллельной программе.