Das Programmiermodell Message-Passing wurde speziell für MIMD-Rechner mit verteiltem Speicher entworfen. Die Grundidee dieses Modells liegt in verschiedenen, gleichzeitig ablaufenden Prozessen, die einen voneinander unabhängigen Speicher besitzen. Ein direkter Zugriff auf die Daten eines anderen Prozesses ist nicht möglich [Thole 1996]. Daher ist es notwendig Nachrichten auszutauschen. Diese Nachrichten können zum einen aus Signalen zur Steuerung des Ablaufes und zum anderen aus Daten, die von einem Prozess zu einem anderen gelangen müssen, bestehen. Die Prozesse, die parallel ablaufen, können komplett verschieden sein.
Die wichtigsten Vertreter des Message-Passing sind das Message-Passing-Interface (MPI) und die Parallel Virtual Machine (PVM). Die Parallelisierung eines Programmes geschieht durch Aufteilen des Prozesse in Teilprozesse. Diese Teilprozesse müssen in der Regel miteinander kommunizieren, wofür Aufrufe von Kommunikationsroutinen in das Programm eingefügt werden müssen. Zusätzlich ist eine Verwaltung der Prozesse, die einen gewissen Overhead erzeugen, notwendig. Für Cluster aus Workstations oder Personal Computern stellt das Message-Passing das optimale Programmiermodell dar.
Eine Message-Passing Bibliothek muss dem Programmierer eine Reihe von Funktionalitäten zur Verfügung stellen[Thole 1996]: