Hajautettu ohjelmointi on yksi rinnakkaisohjelmoinnin tai rinnakkaislaskennan muoto. Rinnakkaisohjelmointiin kuuluu tietokoneita ja tietokoneiden laskentayksiköitä, jotka työskentelevät samanaikaisesti tietyn ongelman, kuten huomisen sääennusteen, parissa. Laskentayksiköt voivat sijaita hyvin läheisesti ja koordinoida tai sijoittaa toisistaan. Kun laskentayksiköt ovat erillään, sitä kutsutaan hajautetuksi ohjelmoinniksi. Tällaisessa tilanteessa laskentayksiköt eroavat usein toisistaan, ja myös käyttöjärjestelmä ja verkkoasetukset eroavat toisistaan, mikä tekee laskutoiminnan ohjelmoinnista erityisen haastavaa.
Kun ongelmaa ratkaistaan hajautetusti, ohjelma on jaettava osiin, jotta ohjelman osat voidaan suorittaa eri laskentayksiköillä; näitä osia kutsutaan usein “prosesseiksi”. Prosessit toimivat samanaikaisesti, mutta niiden on välitettävä panokset ja tulokset toisilleen. Jos prosessit toimivat eri laitteistoilla, kuten yksi osa toimii Intelillä ja toinen SUN: lla, ohjelmat on koottava ja optimoitava eri tavalla.
Yksi tapa ratkaista riittävän vaikea ongelma on hajottaa syöttöosat ja saada eri laskentayksiköt työskentelemään eri osien kanssa käyttäen samaa algoritmia, sääntöjä tai vaiheita ongelmanratkaisuun. Esimerkiksi 10,000 parin genomin murtamiseksi ensimmäiset 1,000 paria voitaisiin määrittää ensimmäiselle laskentayksikölle, toiset 1,000 paria toiselle laskentayksikölle ja niin edelleen, kaikki käyttäen samaa algoritmia. Hajautetulla ohjelmoinnilla yksi etu on se, että eri laskentayksiköt voivat käyttää erilaisia algoritmeja saman ongelman ratkaisemiseksi, mikä johtaa huomattavasti parempaan ratkaisuun. Tämä on samanlainen kuin palapelin ratkaiseminen, kun jotkut ihmiset yhdistävät rajan, kun taas toiset koottavat tietynvärisiä paloja.
Hajautettujen tietojenkäsittelyprosessien koordinointi voi olla erityisen vaikea tehtävä. Jotkin laskentayksiköt voivat epäonnistua tai ne voivat keskeytyä muiden töiden käsittelemiseksi. Syötteet tai laskentatulokset sisältävät viestit eivät välttämättä saavuta määränpäätä. Jos ohjelmat on kirjoitettu naiivilla tavalla, tietokoneyksikön tai joidenkin viestien katoaminen voi aiheuttaa koko tietokonejoukon jumittumisen.
Hajautetussa ohjelmoinnissa yksi prosessi voi olla ohjausprosessi, joka saa olennaisilta osin työn suoritetuksi muilla prosesseilla, tai kaikki prosessit voivat toimia vertaisverkolla ilman prosessia ”päällikkönä”. Joitakin esimerkkejä hajautetun ohjelmoinnin ongelmista ovat geologisten tietojen analysointi resursseja, kuten öljyä, proteiinien ja biologisten molekyylien mallintamista, koodattujen viestien halkeilua ja sotilaallisia simulaatioita varten. SETI-projekti, joka etsii älykästä maanpäällistä elämää maapallon vastaanottamista radiosanomista, on ehkä yksi tunnetuimmista esimerkeistä.