Obstaja vec razlicnih programskih modelov s katerimi lahko konstruiramo paralelne algoritme na osnovi von Neumanovega modela racunalnika. Von Neumanov model racunske enote predpostavlja procesor in spomin, ki sta skupaj sposobna izvajati zaporedje ukazov. Je torej zakljucena celota, ki prek vhodno/izhodnih naprav komunicira z drugimi racunskimi enotami. Fizicno je to lahko en sam procesor s spominom ali pa samo proces v operacijskem sistemu, ki omogoca deljenje procesorskega casa vecjemu stevilu procesov.
Modularnost programov je pomembna osnova pri razvoju paralelnih programov. Zakljucene procedure kazejo osnovne dele celotnega programa in s tem lazji vpogled na kasnejso razdelitev na vec racunskih enot, ki med seboj komunicirajo po komunikacijskih kanalih. Na sliki 5.3 je prikazan enostavni paralelni programski model s stirimi vozli. Eden od vozlov je podrobno prikazan kot von Neumanov programski model, v katerem je razvidna procesna enota, spominska enota in vhodno/izhodni komunikacijski kanali. Kanali po katerih se pretakajo podatki imajo lahko tudi vmesne pomnilnike (bufferje), ki so zmozni postavljanja vec sporocil (podatkov) v vrsto (message queue). Prikazani programski model ima naslednje lastnosti:
Pri razvoju paralelnih programov je potrebno izvajati modularno zasnovo na nacin, s katerim je mozno ucinkovito izdelati osnovne naloge, ki bodo dovolj majhne in hkrati tako velike, da bo cim manj nepotrebnega komuniciranja med nalogami, ter s tem hitrejse izvrsevanje celotnega paralelnega programa. Pomemba lastnost, ki jo je potrebno imeti v mislih pri razvoju paralelnih programov je tudi skalabilnost. To pomeni, da je potrebno program napisati program tako, da brez tezav deluje na enem ali vec procesorjev.
Izvrsevanje posameznih nalog naj bi bilo neodvisno od tega, kje se naloga izvrsi. Procesorji naj bi bili s stalisca lokacije enakovredni. To je posebno pomembno pri racunalnikih v mrezi, kjer imamo razlicne procesorje in razlicne operacijske sisteme. Klasicen primer, pri katerem naloge niso neodvisne od lokacije, je implementacija metode Monte--Carlo, kjer najdemo razlicne generatorje nakljucnih stevil na razlicnih operacijskih sistemih.
Majhna modifikacija v nacinu posredovanja sporocil, kot je prikazana na sliki 5.3, spremeni model nalog s kanali v model s posredovanjem sporocil (message passing). Razlika je v tem, da se ne posilja sporocila v kanal, ampak se posilja direktno nalogi, ne da bi komunikacijski kanal vnaprej obstajal. Programski model s posredovanjem sporocil je tudi najbolj razsirjen paralelni model, ki ga je mozno aplicirati na veliki vecini racunalniskih arhitektur. Kreiranje novih procesov ni obicajno. Vsi vozli paralelnega programa se obicajno kreirajo na zacetku in si nato izmenjujejo sporocila. Taki sistem implementirajo programski model SPMD, saj vsak vozel poganja le en program na razlicnih podatkih.
Ena od omejitev modela s posredovanjem sporocil je ta, da morajo imeti vsi vozli paralelnega programa dovolj velik lokalni spomin. Potrebna velikost je odvisna od implementacije in spominskih zahtev problema. Na sistemih z velikom stevilom procesorjev je velikost lokalnega spomina lahko tudi omejitev, ki narekuje nacin izvedbe.
Na sliki 5.4 je prikazan paralelni programski model z deljenim spominom. Vozli v tem modelu uporabljajo skupni naslovni prostor v katerega piseijo in berejo asinhrono. Vozli imajo lahko se vedno svoj lokalni spomin, ki pa se obicajno uporablja le za manjse podatke lokalnega znacaja. Vsa komunikacija poteka preko globalnega spomina. Naloge se med seboj sinhronizirajo z zaklepanjem ali semaforji. Prednost tega model je s programerskega stalisca v tem, da ni potrebno deliti podatkov na naloge, kar lahko poenostavi razvoj programov.