[all-commits] [llvm/llvm-project] b34c7d: [OpenMP] Introduce hybrid core attributes to OMP_P...

Jonathan Peyton via All-commits all-commits at lists.llvm.org
Mon Jul 31 11:56:41 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: b34c7d8c8e1a36bdd432210247511aee4423a316
      https://github.com/llvm/llvm-project/commit/b34c7d8c8e1a36bdd432210247511aee4423a316
  Author: Jonathan Peyton <jonathan.l.peyton at intel.com>
  Date:   2023-07-31 (Mon, 31 Jul 2023)

  Changed paths:
    M openmp/runtime/src/i18n/en_US.txt
    M openmp/runtime/src/kmp.h
    M openmp/runtime/src/kmp_affinity.cpp
    M openmp/runtime/src/kmp_affinity.h
    M openmp/runtime/src/kmp_settings.cpp
    M openmp/runtime/src/z_Linux_util.cpp
    M openmp/runtime/test/affinity/omp-places-invalid-syntax.c

  Log Message:
  -----------
  [OpenMP] Introduce hybrid core attributes to OMP_PLACES and KMP_AFFINITY

* 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 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 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.

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




More information about the All-commits mailing list