This is an archive of the discontinued LLVM Phabricator instance.

[OpenMP] Introduce hybrid core attributes to OMP_PLACES and KMP_AFFINITY
ClosedPublic

Authored by jlpeyton on Jul 5 2023, 2:40 PM.

Details

Summary
  • Add KMP_CPU_EQUAL and KMP_CPU_ISEMPTY to affinity mask API
  • Add printout of leader to hardware thread dump
  • Allow OMP_PLACES to restrict __kmp_affin_fullMask

    This change fixes an issue with the OMP_PLACES=resource(#) syntax. Before this change, specifying the number of resources did NOT change the default number of threads created by the runtime. e.g., OMP_PLACES=cores(2) would still create __kmp_avail_proc number of threads. After this change, the __kmp_affin_fullMask and __kmp_avail_proc are modified if necessary so that the final place list dictates which resources are available and how thus, how many threads are created by default.
  • Introduce hybrid core attributes to OMP_PLACES and KMP_AFFINITY

    For OMP_PLACES, two new features are added:
    1. OMP_PLACES=cores:<attribute> where <attribute> is either intel_atom, intel_core, or eff# where # is 0 - number of core efficiencies-1. This syntax also supports the optional (#) number selection of resources.
    2. OMP_PLACES=core_types|core_effs where this setting will create the number of core_types (or core_effs|core_efficiencies).

      For KMP_AFFINITY, the granularity setting is expanded to include two new keywords: core_type, and core_eff (or core_efficiency). This will set the granularity to include all cores with a particular core type (or efficiency). e.g., KMP_AFFINITY=granularity=core_type,compact will create threads which can float across a single core type.

Diff Detail

Event Timeline

jlpeyton created this revision.Jul 5 2023, 2:40 PM
Herald added a project: Restricted Project. · View Herald TranscriptJul 5 2023, 2:41 PM
jlpeyton requested review of this revision.Jul 5 2023, 2:41 PM
This revision is now accepted and ready to land.Jul 28 2023, 12:14 PM