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).
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.