Udostępnij za pośrednictwem


A.11 określające stała liczba wątków

Niektóre programy polegać na stałe, wstępnie określoną liczbę wątków do poprawnego wykonania.Ponieważ to ustawienie domyślne dla dynamicznych dostosowania liczba wątków jest zdefiniowane w implementacji, takie programy można wyłączyć możliwość dynamicznego wątków i ustawić liczbę wątków jawnie, aby zapewnić możliwość przenoszenia.Poniższy przykład pokazuje, jak to zrobić za pomocą omp_set_dynamic (ppkt 3.1.7 na stronie 39), i omp_set_num_threads (sekcja 3.1.1 na stronie 36):

omp_set_dynamic(0);
omp_set_num_threads(16);
#pragma omp parallel shared(x, npoints) private(iam, ipoints)
{
    if (omp_get_num_threads() != 16) 
      abort();
    iam = omp_get_thread_num();
    ipoints = npoints/16;
    do_by_16(x, iam, ipoints);
}

W tym przykładzie program wykonuje poprawnie tylko wtedy, gdy jest wykonywane przez 16 wątków.Jeśli wykonania nie jest zdolny do obsługi 16 wątków, zachowanie w tym przykładzie jest zdefiniowane w implementacji.

Należy zauważyć, że liczba wątków wykonujących równoległych regionu pozostaje stała, podczas równoległych regionu, niezależnie od dynamicznej wątków ustawienie.Mechanizm dynamicznej wątki Określa liczbę wątków używanych na początku równoległych regionu i utrzymuje stały czas regionu.