Pinligt parallelle algoritmer forklaret

I parallel programmering er en pinligt parallel algoritme en, der ikke kræver kommunikation eller afhængighed mellem processerne. I modsætning til distribuerede computerproblemer, der har brug for kommunikation mellem opgaver - især på mellemliggende resultater, er pinligt parallelle algoritmer lette at udføre på serverfarme, der mangler den specielle infrastruktur, der bruges i en ægte supercomputer-klynge.

På grund af arten af ​​pinligt parallelle algoritmer er de velegnede til store, internetbaserede distribuerede platforme og lider ikke af parallel afmatning. Det modsatte af pinligt parallelle problemer er i sagens natur serielle problemer, som slet ikke kan paralleliseres.

Det ideelle tilfælde af pinligt parallelle algoritmer kan opsummeres som følger:

  • Alle underproblemer eller opgaver defineres, før beregningerne begynder.
  • Alle underløsningerne er gemt i uafhængige hukommelsesplaceringer (variabler, arrayelementer).
  • Således er beregningen af ​​underløsningerne fuldstændig uafhængig.
  • Hvis beregningerne kræver en vis initial eller endelig kommunikation, kalder vi det næsten pinligt parallelt.

Mange undrer sig måske over etymologien i udtrykket ”pinligt”. I dette tilfælde har pinligt intet at gøre med forlegenhed; faktisk betyder det en overflod - her henvises til paralleliseringsproblemer, der er "pinligt lette".

Et almindeligt eksempel på et pinligt parallelt problem er 3d-videogengivelse håndteret af en grafikbehandlingsenhed, hvor hver ramme eller pixel kan håndteres uden indbyrdes afhængighed. Nogle andre eksempler ville være proteinfoldesoftware, der kan køre på enhver computer, hvor hver maskine laver et lille stykke af arbejdet, generering af alle undergrupper, tilfældige tal og Monte Carlo-simuleringer.