A.11 Détermination du nombre fixe de threads
Certains programmes reposent sur un nombre fixe et préspécifié de thread s'exécute correctement. Étant donné que le paramètre par défaut pour l'ajustement dynamique du nombre de threads implémentation-est défini, ces programmes peuvent choisir de désactiver la fonction de thread dynamique et définir le nombre de threads explicitement pour garantir la portabilité. L'exemple suivant montre comment procéder à l'aide omp_set_dynamic (section 3.1.7 à la page 39), et omp_set_num_threads (section 3.1.1 à la page 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);
}
Dans cet exemple, le programme exécute correctement uniquement s'il est exécuté par 16 threads. Si l'implémentation n'est pas capable de prendre en charge 16 threads, le comportement de cet exemple implémentation-est défini.
Notez que le nombre de threads exécutant une région parallèle ne change pas pendant une région parallèle, indépendamment de dynamique entraîne le paramètre. Le mécanisme de thread dynamique détermine le nombre de threads à utiliser au début de la zone parallèle et le maintient constante pour la durée de la zone.