﻿# MPI

MPI\. Message Passing Interface \(интерфейс передачи сообщений\)\. MPI является наиболее распространённым стандартом интерфейса обмена данными в параллельном программировании, существуют его реализации для большого числа компьютерных платформ\. MPI предоставляет программисту единый механизм взаимодействия ветвей внутри параллельного приложения независимо от машинной архитектуры \(однопроцессорные/многопроцессорные с общей/раздельной памятью\), взаимного расположения ветвей \(на одном процессоре или на разных\)\. В числе основных достоинств MPI по сравнению с интерфейсами других коммуникационных библиотек обычно называют следующие его возможности:

* возможность использования в языках Фортран, Си, Си\+\+;
* предоставление возможностей для совмещения обменов сообщениями и вычислений;
* предоставление режимов передачи сообщений, позволяющих избежать излишнего копирования информации для буферизации;
* широкий набор коллективных операций допускающих гораздо более эффективную реализацию параллельной программы;
* удобные средства именования адресатов сообщений, упрощающие разработку стандартных программ или разделение программы на функциональные блоки\.

Однако разработчики MPI подвергаются суровой критике за то, что интерфейс является слишком громоздким и сложным для прикладного программиста\. Интерфейс оказался сложным и для реализации\.

В итоге в настоящее время практически не существует реализаций MPI, в которых в полной мере обеспечивается совмещение обменов с вычислениями\.

## Библиографический список

1. Википедия\. [Message Passing Interface](https://ru.wikipedia.org/wiki/Message_Passing_Interface)
1. Лаборатория Параллельных Информационных Технологий\. "[MPI: The Message Passing Interface](https://parallel.ru/tech/tech_dev/mpi.html)"
1. [Message Passing Interface Forum](https://www.mpi-forum.org/)