Prawo Amdahla

Każdy, kto choć trochę zajmował się przetwarzaniem równoległym albo architekturami wieloprocesorowymi, zna z pewnością prawo Amdahla. Dla tych, którzy nie znają: przyspieszenie uzyskiwane na N procesorach wynosi 1/(S+(1-S)/N), gdzie S jest częścią kodu, która nie może być wykonana równolegle.

Każdy, kto choć trochę zajmował się przetwarzaniem równoległym albo architekturami wieloprocesorowymi, zna z pewnością prawo Amdahla. Dla tych, którzy nie znają: przyspieszenie uzyskiwane na N procesorach wynosi 1/(S+(1-S)/N), gdzie S jest częścią kodu, która nie może być wykonana równolegle.

Podajmy kilka prostych przykładów. Jeżeli na czteroprocesorowym komputerze uruchomimy program, który aż w 95% może być wykonywany równolegle, uzyskamy nieco ponadtrzyipółkrotne przyspieszenie. Można powiedzieć, że to jeszcze znośnie, bo jeżeli na szesnastoprocesorowym komputerze puścimy program, który tylko w 80% może być wykonany równolegle, zaobserwujemy zaledwie czterokrotny przyrost prędkości wykonania!

Prawo Amdahla stanowi elementarne zagadnienie na wszystkich kursach programowania równoległego. Skutecznie studzi także zapędy inżynierów sprzętu komputerowego, którzy zdają sobie sprawę, że po to aby maszyna wieloprocesorowa była wyraźnie wydajniejsza, oprogramowanie musi być projektowane w specjalny sposób. Nie może więc być mowy o tym, by łatwo dało się zwiększyć wydajność systemu "dostawiając" do niego nowe jednostki przetwarzania.

Jednak prawo Amdahla jest tworem teoretycznym, w żaden sposób nie przymocowanym do krzemu, bramek i całej komputerowej otoczki. Spójrzmy teraz na nie z wysoka, jako na prawo rządzące systemami, w których zadania realizowane są równolegle. Oznacza ono, że im więcej "jednostek przetwarzania" dodamy do zadań, których istotna część musi być realizowana szeregowo, tym więcej tego czasu zmarnujemy. Odnieśmy je teraz do zespołów ludzkich w organizacjach - zespołów realizujących zadania bardziej złożone niż przeciętny program komputerowy.

Szkoda, że menedżerowie nie uczą się prawa Amdahla. Zrozumieliby wtedy, dlaczego powiększanie zespołów, które nie radzą sobie z bieżącymi zadaniami, rzadko prowadzi do lepszych efektów. A jednak naiwna wiara, że dodanie ludzi przyśpieszy prace nadal pokutuje wśród kierowników nie tylko średniego szczebla. Zauważmy teraz skłonność dużych organizacji do zebrań oraz uwagę, jaką poświęca się tam obiegowi informacji. Czy prawo Amdahla nie sugerowałoby raczej pomniejszenia zespołów w miejsce kolejnego zebrania (czyli działania o charakterze szeregowym)? Jeżeli dokonać na nim paru prostych przekształceń matematycznych, to można pokusić się o ustalenie wzoru na maksymalną liczbę osób ("jednostek przetwarzania") w przypadku zadanego procentu zadań szeregowych i przy docelowej wydajności... no chyba trochę za daleko się posunęliśmy.

Charakterystyczne, że z wszelkich badań wynika, iż innowacje powstają jedynie w małych firmach i w małych zespołach. To prosta konsekwencja prawa Amdahla. Nie wiem, czy ukuto już termin "ekonomika innowacji", ale gdyby ktoś się kiedyś tym zajął, powinien wyjść od praw rządzących przetwarzaniem równoległym.

Już słyszę, jak niektórzy z Państwa mnie strofują. Jakże to, przecież ludzie to nie procesory - każdy myśli trochę inaczej i jeden nie zastępuje drugiego. Tak, zgadzam się. Zdaję sobie także sprawę, że w pracy zespołów - szczególnie zaś w tych zespołach, które tworzą innowacje - dalece ważniejsza od ilości jest jakość. Dlatego właśnie proszę prawa Amdahla w odniesieniu do zespołów nie rozumieć banalnie, tj. numerycznie. Natomiast co do reguły sprawdza się ono znakomicie, o czym miałem okazję przekonać się wielokrotnie podczas mojej pracy w wielu zespołach.

Do następnego tygodnia zostawię Państwa z następującą myślą: czy jeszcze jakieś "techniczne" prawa informatyki stosują się do organizacji?


TOP 200