[Openmp-commits] [PATCH] D139854: [OpenMP][libomp] Add topology information to thread structure

Jonathan Peyton via Phabricator via Openmp-commits openmp-commits at lists.llvm.org
Mon Dec 12 09:26:20 PST 2022


jlpeyton created this revision.
jlpeyton added reviewers: tlwilmar, Nawrin, hbae.
jlpeyton added a project: OpenMP.
Herald added subscribers: guansong, yaxunl.
Herald added a project: All.
jlpeyton requested review of this revision.
Herald added a reviewer: jdoerfert.
Herald added a subscriber: sstefan1.

Each time a thread gets a new affinity assigned, it will not
only assign its mask, but also topology information including
which socket, core, thread and core-attributes (if available)
it is now assigned. This occurs for all non-disabled `KMP_AFFINITY`
values as well as `OMP_PLACES`/`OMP_PROC_BIND`.

The information regarding which socket, core, etc. can take on three
values:

1. The actual ID of the unit (0 - (N-1)), given N units
2. `UNKNOWN_ID` (-1) which indicates it does not know which ID
3. `MULTIPLE_ID` (-2) which indicates the thread is spread across multiple of this unit (e.g., affinity mask is spread across multiple hardware threads)

This new information is stored in `th_topology_ids[]` array. An example
how to get the socket Id, one would read `th_topology_ids[KMP_HW_SOCKET]`.
This could be expanded in the future to something more descriptive for
the "multiple" case, like a range of values. For now, the single
value suffices.

The information regarding the core attributes can take on two values:

1. The actual core-type or core-eff
2. `KMP_HW_CORE_TYPE_UNKNOWN` if the core type is unknown, and `UNKNOWN_CORE_EFF` (-1) if the core eff is unknown.

This new information is stored in `th_topology_attrs`. An example
how to get the core type, one would read
`th_topology_attrs.core_type`.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D139854

Files:
  openmp/runtime/src/kmp.h
  openmp/runtime/src/kmp_affinity.cpp
  openmp/runtime/src/kmp_affinity.h

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D139854.482162.patch
Type: text/x-patch
Size: 11450 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20221212/1b25c95a/attachment.bin>


More information about the Openmp-commits mailing list