OpenMP : stratégie "First Touch"

Stratégie « First Touch »

Les aspects NUMA sont à considérer plus particulièrement lorsqu’on utilise un parallélisme en mémoire partagée (OpenMP).
Sur les architectures multi-sockets, le temps nécessaire pour acheminer les données de la mémoire vers les cœurs de calcul dépend de leur localité.

Dans ce cas, on préférera optimiser les temps d’accès mémoire en s’assurant que les données accédées par chaque thread se trouvent sur le socket sur lequel il s’exécute.

Prenons l’exemple suivant :

Chaque thread va initialiser les portions des tableaux a, b et c qui lui correspondent. Si l’espace mémoire disponible le permet, les données seront alors écrites dans la RAM du socket sur lequel s’exécute chaque thread.

Lors du traitement parallèle de la seconde boucle, la lecture et l’écriture des données par chaque thread sera alors directe (pas d’échange de données inter-sockets).
On parle de stratégie « First Touch », elle permet d’allouer les données avec une localité optimale.

Espace utilisateurs/Doc technique EOS/Améliorer les performances

Voir aussi