Ieviešot paralēlo skaitļošanu, izrādījās, ka tas nemaz uzreiz nedot ļoti lielu efektivitāti, bet ir jādomā arī par risināmajiem uzdevumiem. Reālajos uzdevumos ir vajadzīgas gan secīgas darbības, gan tādas, kuras var veikt paralēli. Paralēlā mērogošana Kad ieejas datu apjoms nemainās, bet tiek palielināts procesoru skaits, tad to sauc par izteiktu paralēlās skaitļošanas mēroga paplašināšanu. Paralēlās skaitļošanas mērķis ir samazināt laiku, kas nepieciešams uzdevuma atrisināšanai. Paātrinājumu S var definēt kā S = \frac{T_s}{T_p}, kur ir uzdevuma izpildes laiks, veicot aprēķinus secīgi ar vienu procesoru, un ir aprēķiniem vajadzīgais laiks, veicot tos ar p procesoriem vienlaicīgi.Ideālā gadījumā paātrinājumam vajadzētu pieaugt tieši proporcionāli izmantoto procesoru skaitam (sk. attēlu zemāk). Ja Anna 20 skaitļu saskaitīšanai bez Jāņa pieaicinātu vēl arī Laimu un Pēteri, tad teorētiski pietiktu ar 5 sekundēm, lai visus skaitļus saskaitītu, jo katram būtu jāsaskaita tikai 5 skaitļi. Tas tomēr ir idealizēts variants un reālajos uzdevumos, palielinot procesoru (kodolu) skaitu, kādā brīdī tiek sasniegts paātrinājuma maksimums, bet turpinājumā aprēķinu laiks sāk pieaugt.Jau tika pieminēts, ka paralēlo skaitļošanu izmanto ne tikai aprēķinu paātrināšanai, bet arī, lai varētu veikt uzdevumus, kuros jāapstrādā lieli datu apjomi (vienam procesoram ir ierobežots pieejamās atmiņas apjoms) un to sauc par “vājo mērogošanu” (angl. weak scaling). Palielinot procesoru skaitu, šajā gadījumā uzdevuma izpildes laiks nemainīsies, bet apstrādājamo datu apjoms pieaugs proporcionāli procesoru skaita pieaugumam. Piemēram, ja Anna skaitļu saskaitīšanai bez Jāņa pieaicinātu vēl arī Laimu un Pēteri, tad 20 sekundēs (kā 20 skaitļu uzdevumā) varētu saskaitīt jau 80 skaitļu summu. Tas, protams, ir idealizēts variants, bet arī reālos uzdevumos apstrādājamo datu apjoma pieaugumu ar paralēlo skaitļošanu ir vieglāk sasniegt, nekā būtisku aprēķinu ātruma palielinājumu.Tas nozīmē, ka superskaitļotāji ir sevišķi noderīgi lielu datu (angl. Big Data) apjomu apstrādē, kā arī mākslīgā intelekta trenēšanā, kur arī jāizmanto lieli datu apjomi. Paralēlās skaitļošanas ierobežojumi Paralēlā skaitļošana ne vienmēr dod gaidīto efektu, jo ir jāveic papildus darbības, kuras nav secīgajās skaitļošanas programmās. Var būt jāveic papildus aprēķini, jāpārvada dati uz citu procesoru un jāsinhronizē (jāsaskaņo) darbības ar citiem procesoriem. Reizēm paralēlajā skaitļošanā nevar vienmērīgi sadalīt veicamos uzdevumus un nākas gaidīt kamēr darbu pabeigs tie procesori, kuriem bija jāveic vairāk skaitļošanas uzdevumu nekā citiem. Var būt arī tā, ka daļa no aprēķiniem tomēr ir jāveic secīgi, jo tos nevar sadalīt izpildei paralēli uz vairākiem procesoriem.Šeit ir redzams piemērs, kurā divas (2) darbības ir jāveic virknē (viena aiz otras) un 6 darbības varētu veikt arī paralēli. Ja vienam darbiniekam (procesoram) darbs būtu 8 laika sprīži, tad 2 darbiniekiem tikai 5, bet 3 darbiniekiem jau tikai 4. Vēl ņemot klāt līdz 6 darbiniekiem (procesoriem) varētu samazināt kopējo skaitļošanas laiku līdz trijiem (3) laika sprīžiem, bet tālāka procesoru skaita palielināšana vairs nedod nekādu efektu.Ar 6 darbiniekiem sanāk kopā 3 soļi un kopējai darbu laika uzlabojums ir reizes. Secinājumi Diskrētu darbu pasaulē, ārējo resursu piesaiste ne vienmēr nes vajadzīgo efektu. Skatiet nākamo attēlu, kā ilustrāciju konkrētam gadījumam: Amdāla (Amdhal) likums To, cik efektīva varētu būt pāreja uz paralēlo skaitļošanu, nosaka Amdāla likums, pēc kura var izrēķināt maksimālo iespējamo skaitļošanas procesa laika saīsināšanu, jeb skaitļošanas procesa paātrinājumu (angl. speedup) sadalītu uzdevumu sistēmā. Ir pieņemts šo skaitļošanas ātruma uzlabojuma koeficientu apzīmēt ar , kuru var aprēķināt sekojoši: S_{max} = {1}/{(1-p_f)} Šajā formulā ir parametrs, kas raksturo kādu daļu no aprēķiniem varam veikt paralēli. Šim parametram nav mērvienības. Piemēram, ja 75% no aprēķiniem varam veikt paralēli, proti, , tad . Tas nozīmē, ka, izmantojot paralēlās skaitļošanas aprēķinu metodi, kopējo skaitļošanas laiku varam samazināt 4 reizes.Apkoposim galvenos ierobežojošos faktorus, kas neļauj iegūt maksimālu efektu no paralēlās skaitļošanas metožu izmantošanas, un tie ir:papildus veicamās darbības (jāsadala skaitļi u.c.), papildu aprēķini, papildu komunikācija un darbību sinhronizācija, neizlīdzināta slodze, darbības, kas tomēr ir jāveic secīgi. Piemēri Apskatīsim dažus piemērus, kā Anna ar draugiem varētu paātrināt skaitļu saskaitīšanu, un kā pieminētie ierobežojošie faktori to ietekmē. Pieņemsim, ka divu skaitļu saskaitīšanai vajag vienu sekundi, bet rezultāta nodošana citam aizņem 0,1 sekundi.Anna viena pati var saskaitīt 20 skaitļus 19 sekundēs, proti, . Ja viņa pieaicina palīgā Jāni, tad katram ir jāsaskaita 10 skaitļi un to var paveikt deviņās sekundēs. Jānis iegūto rezultātu nodod Annai un tas papildus prasa organizatorisko laiku transportam 0,1 (s). Pēc tam, kad dati no Jāņa saņemti, Annai ir vajadzīga viena sekunde, lai Jāņa rezultātu pieskaitītu savam rezultātam. Līdz ar to, kopīgais aprēķinu laiks, sadalot uzdevumu uz diviem skaitļotājiem un pēc tam apkopojot rezultātu, būs: T_2=9+0,1+1=10,1 \> (s) Tagad, ja vēl palīgā pieaicina Pēteri un Laimu, tad darbu var sadalīt uz četriem (sk. attēlu zemāk). Tādā gadījumā, uzdevums ir - katram jāsaskaita pieci skaitļi un noslēgumā Anna apkopo rezultātu. Katrs darbinieks datus nodod Annai. Nodotos rezultātus Anna secīgi liek klāt pie kopējās summas. Tādai operācijai vajag 0,1 (s). Tādā gadījumā kopējais aprēķinu laiks ir: T_4=4+3⋅0,1+3⋅1=7,3\> (s). Mēs varētu vēl palielināt darbinieku skaitu uz astoņiem, bet tad vairs nevaram vienmērīgi sadalīt darba slodzi . Tad labākajā variantā četri summē trīs skaitļus, bet citi četri – tikai divus. Darbu varēs pabeigt tikai tad, kad Anna saņems rezultātus no visiem un varēs saskaitīs tos kopā. Tiem darbiniekiem, kuriem jāsaskaita trīs skaitļi, vajadzēs vairāk laika aprēķiniem un tas nosaka paralēli veicamo darbu ilgumu. Kopējais aprēķinu laiks šajā gadījumā būs T_8=2+7⋅0,1+7⋅1=9,7 (s). Te ir labi redzams, ka veicot darbu ar astoņiem darbiniekiem kopējais aprēķinu laiks (sadalot darbus paralēli) ir lielāks, nekā veicot šo darbu ar četriem darbiniekiem.Vēl varētu papildināt, ka pēdējā variantā tika diezgan loģiski sadalīta slodze – pa diviem un trim saskaitāmiem katram dalībniekam. Ja, piemēram, uzticētu vienam saskaitīt sešus skaitļus, bet pārējiem septiņiem pa diviem skaitļiem, tad var izrēķināt, ka kopējais laiks rezultāta iegūšanai būtu 12,7 (s), kas ir lielāks, nekā saskaitīšanu veicot Annai kopā ar Jāni, kas ir 10,1 (s).Šis piemērs parāda, ka iesaistot vairāk darba veicējus, ne vienmēr varam panāk kopējo darba paātrinājumu. Lai gan laiks darba veikšanai katram darbiniekam samazinās, tomēr vajag papildu laiku komunikācijai. Jo mazāk laika prasīs darba veikšana darbiniekam savā uzdevuma daļā, jo lielāka ietekme būs tam laikam, kas nepieciešams komunikācijai. Apskatīsim piemēru, kur jāsaskaita 1001 skaitlis un to veiks astoņi darbinieki. Šajā piemērā slodzi nevar sadalīt vienmērīgi, bet tomēr iegūtais rezultāts ir diezgan labs. T_s = 1000 (s)\\ T_8 = 125+7 \cdot 0,1+7 =132,7 (s)\\ S = T_s/T_8=7,5 %S = \frac{T_s}{T_8}=7,5 Secinājumi Lai gan reālie uzdevumi, kurus veic ar HPC, ir daudz sarežģītāki nekā skaitļu saskaitīšana, kuru veica Anna ar draugiem, tomēr var izdarīt secinājumu, ka jācenšas samazināt laika zudumus. To var panākt vienmērīgāk sadalot slodzi un palielinot aprēķiniem nepieciešamā laika attiecību pret komunikācijai nepieciešamo laiku.