Piinlikult seletatavad paralleelsed algoritmid

Paralleelsel programmeerimisel on piinlikult paralleelne algoritm, mis ei vaja protsesside vahelist suhtlemist ega sõltuvust. Erinevalt hajutatud arvutusprobleemidest, mis vajavad ülesannete vahelist suhtlemist - eriti vahetulemuste korral, on piinlikult paralleelseid algoritme lihtne teha serverifarmides, kus puudub tõelises superarvutiklastris kasutatav spetsiaalne infrastruktuur.

Piinlikult paralleelsete algoritmide olemuse tõttu sobivad need hästi suurtele Interneti-põhistele hajutatud platvormidele ega kannata paralleelse aeglustumise all. Piinlikult paralleelsete probleemide vastand on oma olemuselt jadaprobleemid, mida ei saa üldse paralleelida.

Piinlikult paralleelsete algoritmide ideaalse juhtumi võib kokku võtta järgmiselt:

  • Kõik alamprobleemid või ülesanded on määratletud enne arvutuste algust.
  • Kõik alamlahendused on salvestatud sõltumatutesse mälupaikadesse (muutujad, massiivi elemendid).
  • Seega on alamlahenduste arvutamine täiesti sõltumatu.
  • Kui arvutused vajavad mingit esialgset või lõplikku suhtlust, siis nimetame seda peaaegu piinlikult paralleelseks.

Paljud võivad imestada mõiste “piinlikult” etümoloogiat. Sel juhul pole piinlikkusel midagi pistmist piinlikkusega; tegelikult tähendab see üleküllust - siin viidatakse paralleelsusprobleemidele, mis on "piinlikult kerged".

Piinlikult paralleelse probleemi levinud näide on graafika töötlemise üksuse hallatav 3D-videote renderdamine, kus iga kaadrit või pikslit saab käsitseda vastastikuselt sõltumatult. Mõned muud näited on valgu voltimise tarkvara, mida saab kasutada igas arvutis, kus iga masin teeb väikese tüki tööd, kõigi alamhulkade genereerimise, juhuslikud arvud ja Monte Carlo simulatsioonid.