headerphoto

OpenMP

Wielowątkowość w OpenMP

Aby rozpocząć bardziej szczegółowe rozważania na temat OpenMP należy zdefiniować pojęcie wielowątkowości. Najprościej ujmując jest to możliwość równoczesnego wykonywania wielu strumieni instrukcji w obrębie jednego programu. Owe strumienie instrukcji nazywamy wątkami. Klasyczny (sekwencyjny) program komputerowy jest zatem programem jednowątkowym, ponieważ tylko jeden strumień instrukcji może być wykonywany przez program w danym momencie czasu.

Aby zapanować nad szeregiem działających równolegle strumieni instrukcji w programie wielowątkowym, stosuje się specjalny model przetwarzania rozkazów, zwany fork-and-join (rozwidlaj i łącz). Według tego modelu jeden wątek główny (może to być np. główny proces programu), rozwidla się na grupę wątków, które po wykonaniu określonej pracy przekształcają się z powrotem w jeden główny wątek i dalsze obliczenia wykonują się już w sposób sekwencyjny (rys. 6).

Rys. 6. Model równoległego przetwarzania instrukcji (ang. fork-and-join).

W momencie rozwidlenia "wątek tworzący grupę staje się wątkiem typu master i również bierze udział w przetwarzaniu. Jego numer w utworzonej grupie to 0. Po synchronizacji wątek master kontynuuje swoje działanie, a pozostałe wątki z grupy są niszczone"1.

Mocną stroną OpenMP jest przede wszystkim łatwe zrównoleglanie pierwotnie sekwencyjnych programów. Na szczególną uwagę zasługuje prostota z jaką odbywa się cały proces tworzenia, zarządzania i usuwania wątków w kodzie programu. Jest on diametralnie inny w porównaniu do standardu MPI czy Pthreads (de facto "serca" OpenMP). W ich przypadku, obowiązek czuwania nad odpowiednią inicjalizacją, zarządzaniem i niszczeniem wątków spadał na barki programisty. W standardzie OpenMP programista określa tylko "co" ma zostać zrównoleglone a nie "jak" ma to być technicznie wykonane. Ten wygodny sposób programowania komputerów równoległych szybko znalazł uznanie nie tylko w oczach zwykłych programistów, ale także wielkich korporacji komputerowych, takich jak Intel, IBM, HP, czy Compaq. Firmy te zrzeszone jako stowarzyszenie OpenMP Architecture Review Board sukcesywnie wspierają rozwój standardu OpenMP, wraz z ekspertami z całego świata i powiększającą się z dnia na dzień grupą użytkowników.


1 M. Demichowicz, P. Mazur, OpenMP - środowisko programowania komputerów równoległych ze wspólną pamięcią, NAKOM, Poznań 2002, s. 112.