개요

메시지 전달 인터페이스(Message Passing Interface, MPI)는 분산 및 병렬 처리에서 정보의 교환에 대해 기술하는 표준이다. 병렬 처리에서 정보를 교환할 때 필요한 기본적인 기능들과 문법, 그리고 프로그래밍 API 에 대해 기술하고 있지만 구체적인 프로토콜이나 각각의 구현에 대한 것에 대해서는 기술하지 않는, 하나의 거시적인 테두리를 정해주는 표준으로 이해할 수 있다. 즉, MPI는 서로 공간적으로 분리된 머신들 사이에서 메모리를 공유하는 기술을 말한다. MPI는 하드웨어의 도움을 받을 수도 있고, 아니면 완전히 소프트웨어 적으로도 구현할 수 있다. MPI환경에서 프로그램하는 것은 여러 일관성, 통일성을 고려해야 하기 때문에 힘들다는 단점이 있다.

실제적인 MPI 애플리케이션은 서로 정보를 주고받는 여러개의 프로세스들로 이루어져 있는데, 이 각각의 프로세스들은 MPI 애플리케이션이 구동될 때에 모두 병렬적으로 시작된다. 이 각각의 프로세스들은 모두 하나의 문제를 풀기위해 한 프로세스에서 다른 프로세스로 데이터와 정보들을 필요에 따라 서로 주고 받게 된다. 이러한 원리의 장점은 하드웨어적으로 분산되어있는 컴퓨터들 간에도 이런 데이터와 정보들을 주고 받을 수 있다는 점이다. 그래서 특별히 병렬처리를 위해 만들어진 병렬 컴퓨터(공유 메모리를 지녔다거나, 인피니밴드 혹은 Myrinet 등을 통해 고속으로 정보를 주고받는 것이 가능하게 만들어진) 뿐만 아니라, (TCP를 통해 정보들이 교환되는) PC 들로 이루어진 PC 클러스터(PC-Cluster) 에서도 이런 병렬 MPI 프로그램들은 잘 돌아간다.