MPI的核心是程序間通信,遵循程序間順序通信模型(CSP)。每個程序在自己的位址空間内運作程式。聲明的變量(例如int b[10];)是每個程序的私有變量,變量b在不同的程序中是互相獨立的。在MPI中,存在兩種主要的通信方式:一是點對點通信,即兩個程序間通信;二是聚合通信,即一組程序間通信。
每個MPI程序在每組程序中擁有1個程序号。程序号從0開始,例如4個程序在一組,程序号分别是0、1、2、3。所有的MPI通信都在通信域中進行。通信域包含一組程序和一個(隐藏的)通信文本。通信文本的作用在于保證消息和庫的一緻性,也是保證MPI應用程式能夠使用第三方庫的關鍵。通信域對象是一個隐藏類型,可稱之為句柄。在C語言中,通信域句柄是MPI_Comm類型;在Fortran語言中,通信域句柄是TYPE(MPI_Comm)類型(針對Fortran 2008語言)或者INTEGER類型(針對早期的Fortran語言)。在MPI程式中,存在MPI_COMM_WORLD和MPI_COMM_SELF兩個預定義的通信域。MPI_COMM_WORLD包含所有MPI程序,MPI_COMM_SELF僅包含運作一個執行個體程式的程序。MPI提供各種通信域函數,例如MPI_Comm_rank函數用于擷取程序号,MPI_Comm_size函數用于擷取通信域中的程序數量,以及用于建立新的通信域的函數。
一個簡單完整的MPI程式示例如圖1-1所示。在圖1-1中,MPI_Init函數用于初始化MPI程式,MPI_Finalize函數用于結束MPI程式。除了極個别函數,大多數MPI函數需要在MPI_Init(或者MPI_Init_thread)函數之後和MPI_Finalize函數之前進行調用。在并行程式中,若MPI_Init函數參數無法從main函數中擷取指令行參數,則需要通過MPI進行指定。

MPI程序間執行是互相獨立的。在圖1-1例子中,printf語句按照随機順序執行,甚至無法保證一次輸出一行。
圖1-1的例子采用C語言編寫,但MPI設計為不專門針對特定的語言。目前,MPI支援C語言(C++程式可調用C語言的接口)和Fortran語言。