* 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
26 lines
706 B
C
26 lines
706 B
C
// RUN: %libomp-compile
|
|
// RUN: env KMP_SETTINGS=1 OMP_PLACES=invalid %libomp-run 2>&1 | FileCheck --check-prefix=INVALID %s
|
|
// RUN: env KMP_SETTINGS=1 OMP_PLACES='sockets(' %libomp-run 2>&1 | FileCheck --check-prefix=SOCKETS %s
|
|
// RUN: env KMP_SETTINGS=1 OMP_PLACES='threads()' %libomp-run 2>&1 | FileCheck --check-prefix=THREADS %s
|
|
//
|
|
// INVALID-DAG: Effective settings
|
|
// INVALID: OMP_PLACES=
|
|
// INVALID-SAME: cores
|
|
//
|
|
// SOCKETS-DAG: Effective settings
|
|
// SOCKETS: OMP_PLACES=
|
|
// SOCKETS-SAME: sockets
|
|
//
|
|
// THREADS-DAG: Effective settings
|
|
// THREADS: OMP_PLACES=
|
|
// THREADS-SAME: threads
|
|
//
|
|
// REQUIRES: affinity
|
|
|
|
#include "omp_testsuite.h"
|
|
|
|
int main() {
|
|
go_parallel();
|
|
return get_exit_value();
|
|
}
|