Asupra paralelizarii

Scriam zilele astea si trageam de mine sa termin un referat (sau ceea ce nemtii numesc Ausarbeitung) despre GPU-uri. Lucruri interesante se intampla in domeniul lor, mai ales ca un cuvant apare extrem de obositor si repetitiv: paralel.

Stateam azi si ma gandeam, in timp ce nu aveam chef sa fac nimic, de ce se chinuie lumea sa paralelizeze. Eram in bucatarie si asteptam ca unica mea sursa de hrana, cartofii prajiti congelati, sa se termine de pregatit. Imi era foame, chiar daca inainte am ras o conserva goala de mazare.

E imposbil ca oamenii sa reuseasca sa paralelizeze ceva vreodata. Si nu ma refer la ceea ce se intampla acum, cat la ceea ce numim paralele. Doua drepte sunt paralele daca nu se intersecteaza niciodata. A venit insa un matematician, si nu ma intreba cine, care a spus ca teoria asta e o porcarie si a inventat geometria lui, in care dreptele paralele se intersecteaza. Apoi Einstein a pornit de la teoria ultimului si si-a dezvoltat propria teorie asupra timpului.

Traim in ceva care nu e paralel. Si nici noi nu putem vizualiza paralele. Nu putem gandi doua lucruri deodata, dar putem sa schimbam destul de repede intre ganduri ca sa lasam impresia ca in 5 min am gandit 5 idei deodata (round robin).

O alta chestie interesanta: Lumea a incercat sa dezvolte din diverse motive interfete paralele pentru comunicatie. Exemplu, dupa cum ii spune si numele, portul si cablul paralel care erau capetele unei interfete paralele. Si totusi acum am ajuns la serial, din alte motive, printre care si ca paralel e mai incet decat serial.

Procesoarele insa incearca sa devina adecvate pentru procesarea paralela. Cum poti insa gandi ca doua procese sunt paralele cand ele trebuie sincronizate si obladuite ca sa nu se blocheze sau sa se intample alte prostii. Daca mintea omului nu e paralela pe deplin, atunci nici nu putem intelege cum sa paralelizam complet algoritmi. Pentru ca probabil, nu exista paralele decat in capul nostru.

Deci. In jurul nostru nu exista nici un exemplu care sa demonstreze ca putem paraleliza o problema 100%, pentru ca atunci problema nu ar mai fi una, ci doua. Si ne gandim cum sa atingem performante mai mari impartind problemele mari in bucati mici si distribuindu-le. Dar…daca am de sapat un sant si sunt o singura persoana care sapa, atunci mai bine chem 100 de oameni si sapam de 95 ori mai repede. Nu de 100 de ori pentru ca intotdeauna apare un coeficient care scade multiplicatorul din cauza ca oamenii trebuie coordonati iar altii sunt lenesi.

Exemplul cu santul e ca si cel cu problemele pe GPU. Daca sapam un sant cu o lopata, atunci dureza mult. Daca santul il sapam cu excavatoare, atunci poate incetinim mai mult munca aducand excavatoare suplimentare. Totul depinde de lungimea santului. Aceeasi metoda a sapatului de santuri o aplicam si problemelor. Ceea ce cred ca e gresit. Deoarece gandirea noastra este in sine secventiala si nu paralela. Exista o secventa si in modul cum paralelizam: daca nu ajunge, atunci mai aducem lopeti sau excavatoare. Nu stim de la inceput cate lopeti ne trebuie. Durata unui sant o cunoastem, dar durata de executie a unei probleme nu o cunoastem.

Si totusi…Complexitatea problemelor ramane aceeasi indiferent cat de repede le-am rezolva.

Daca am incepe sa imbunatatim modul in care serializam am castiga mai mult decat sa incercam sa dezvoltam ceva care nu se potriveste cu modul nostru de gandire.

Si textul asta a fost scris secvential. Totul e secvential. Universuri paralele 100% nu exista, si atunci inseamna ca nu sunt paralele. Dar mai am de citit pana sa imi dau cu parerea.

One Response to “Asupra paralelizarii”

  1. Gusty Says:

    :-))
    Mi-a placut exprimarea : “Pentru ca probabil, nu exista paralele decat in capul nostru.”
    Nu uita sa zici de cazurile in care cand sunt mai multi, dar nu iese nici un bonus al productivitatii, pentru ca iti alegi gresit oamenii, care nu se inteleg prea bine intre ei, si incep sa se certe pentru bani (resurse) si sa-si dea cu lopetile in cap 1 altuia (thread race conditions, deadlocks, starvations… nasol si sa-ti moara de foame threadul).

Leave a Reply