Udostępnij za pośrednictwem


Określanie liczby wątków używanych A.15

Rozważmy następujący przykład niepoprawne (dla sekcji 3.1.2 na stronie 37):

np = omp_get_num_threads(); // misplaced 
#pragma omp parallel for schedule(static)
    for (i=0; i<np; i++)
        work(i);

omp_get_num_threads() Wywołanie zwraca wartość 1 w sekcji szeregowego kodu, tak np będzie zawsze równa 1 w poprzednim przykładzie.Aby określić liczbę wątków, które zostaną wdrożone dla regionu równolegle, wywołanie powinno być wewnątrz regionu równolegle.

Poniższy przykład przedstawia sposób ponownie napisać ten program bez tym kwerendy dla liczba wątków:

#pragma omp parallel private(i)
{
    i = omp_get_thread_num();
    work(i);
}