Partilhar via


A.11 especificando um número fixo de threads

Alguns programas contam com um número fixo, pré-especificados de segmentos seja executado corretamente. Como a configuração padrão para o ajuste dinâmico do número de threads é definidos na implementação, esses programas podem optar por desativar o recurso dinâmico de threads e definir o número de segmentos explicitamente para garantir a portabilidade. O exemplo a seguir mostra como fazer isso usando omp_set_dynamic (seção 3.1.7 na página 39), e omp_set_num_threads (seção 3.1.1 na página 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);
}

Neste exemplo, o programa executa corretamente apenas se ele é executado pelo 16 segmentos. Se a implementação não é capaz de suportar 16 segmentos, o comportamento deste exemplo é definidos na implementação.

Observe que o número de threads em execução de uma região paralela permanece constante durante uma região paralela, independentemente dos threads dinâmicos definindo. O mecanismo de threads dinâmica determina o número de segmentos usados no início da região paralela e mantém constante para a duração da região.