HomePhabricator

[OpenMP] Fix affinity API for KMP_AFFINITY=none|compact|scatter

Description

[OpenMP] Fix affinity API for KMP_AFFINITY=none|compact|scatter

Currently, the affinity API reports garbage for the initial place list and any
thread's place lists when using KMP_AFFINITY=none|compact|scatter.
This patch does two things:

for KMP_AFFINITY=none, Creates a one entry table for the places, this way, the
initial place list is just a single place with all the proc ids in it. We also
set the initial place of any thread to 0 instead of KMP_PLACE_ALL so that the
thread reports that single place (place 0) instead of garbage (-1) when using
the affinity API.

When non-OMP_PROC_BIND affinity is used
(including KMP_AFFINITY=compact|scatter), a thread's place list is populated
correctly. We assume that each thread is assigned to a single place. This is
implemented in two of the affinity API functions

Differential Revision: https://reviews.llvm.org/D45527

Details

Committed
jlpeytonApr 18 2018, 12:25 PM
Differential Revision
D45527: [OpenMP] Fix affinity API for KMP_AFFINITY=none|compact|scatter
Parents
rOMP330282: Introduce GOMP_taskloop API
Branches
Unknown
Tags
Unknown