Affinité OpenMP et CPU

sched_setaffinity ou pthread_attr_setaffinity_np fonctionneront-ils pour définir l’affinité de thread sous OpenMP?

Connexes: Affinité CPU

Oui, les appels nommés fonctionneront pour définir l’affinité des threads. Le seul problème est de corriger le numéro de fil et de définir la bonne affinité dans le fil de droite (vous pouvez essayer d’utiliser la planification statique de la boucle for pour le nombre connu de threads).

Comme je le sais, presque chaque openmp permet de définir une affinité via l’environnement. Le nom de la variable d’environnement varie (il n’a pas été standardisé il ya quelque temps). J’utilise la page http://www.spec.org/omp2001/results/omp2001.html pour rechercher la mise en œuvre openMP et la recherche d’un nom de variable d’environnement spécifique. L’affinité est définie dans environ la moitié des résultats de specOMP. Il existe également certains parameters de réglage des performances OpenMP dans les résultats.

Par exemple, pour le compilateur intel, la variable est

  export KMP_AFFINITY=compact,0 

Pour le compilateur solaire:

  export SUNW_MP_PROCBIND=TRUE 

Pour gcc (pré-openmp 3.1)

  export GOMP_CPU_AFFINITY=0-63 

où 63 correspond au nombre maximal de processeurs (à compter de 0)

Et la version 3.1 d’OpenMP Standard, plus récente, définit la variable d’environnement OMP_PROC_BIND (voir la section 4.4), méthode normalisée de définition de l’affinité dans OpenMP. L’utilisation est:

  export OMP_PROC_BIND=true