|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4 |
|
| #
40ce65b5 |
| 18-May-2022 |
Jonathan Peyton <[email protected]> |
[OpenMP][libomp] Fix affinity warnings and unify under one macro
Warnings that occur during affinity initialization are supposed to be guarded by KMP_AFFINITY=nowarnings,noverbose, but some had been
[OpenMP][libomp] Fix affinity warnings and unify under one macro
Warnings that occur during affinity initialization are supposed to be guarded by KMP_AFFINITY=nowarnings,noverbose, but some had been missed by this logic. Create one macro for affinity warnings that takes these settings into account.
Differential Revision: https://reviews.llvm.org/D125991
show more ...
|
| #
17dcde5f |
| 18-May-2022 |
AndreyChurbanov <[email protected]> |
[OpenMP][libomp] Allow reset affinity mask after parallel
Added control to reset affinity of primary thread after outermost parallel region to initial affinity encountered before OpenMP runtime was
[OpenMP][libomp] Allow reset affinity mask after parallel
Added control to reset affinity of primary thread after outermost parallel region to initial affinity encountered before OpenMP runtime was initialized. KMP_AFFINITY environment variable reset/noreset modifier introduced. Default behavior is unchanged.
Differential Revision: https://reviews.llvm.org/D125993
show more ...
|
|
Revision tags: llvmorg-14.0.3, llvmorg-14.0.2 |
|
| #
d49ce7c3 |
| 12-Apr-2022 |
Jonathan Peyton <[email protected]> |
[OpenMP][libomp] Replace global variable references with local object
Remove references to global __kmp_topology within a kmp_topology_t object method. There should just be implicit references to th
[OpenMP][libomp] Replace global variable references with local object
Remove references to global __kmp_topology within a kmp_topology_t object method. There should just be implicit references to the private object.
show more ...
|
|
Revision tags: llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init |
|
| #
1234011b |
| 31-Jan-2022 |
Jonathan Peyton <[email protected]> |
[OpenMP][libomp] Introduce oneAPI compiler support
Introduce KMP_COMPILER_ICX macro to represent compilation with oneAPI compiler.
Fixup flag detection and compiler ID detection in CMake. Older CMa
[OpenMP][libomp] Introduce oneAPI compiler support
Introduce KMP_COMPILER_ICX macro to represent compilation with oneAPI compiler.
Fixup flag detection and compiler ID detection in CMake. Older CMake's detect IntelLLVM as Clang.
Fix compiler warnings.
Fixup many of the tests to have non-empty parallel regions as they are elided by oneAPI compiler.
show more ...
|
| #
6be7c21b |
| 09-Feb-2022 |
Jonathan Peyton <[email protected]> |
[OpenMP][libomp] Replace accidental VLA with KMP_ALLOCA
MSVC does not support variable length arrays. Replace with KMP_ALLOCA which is already used in the same file for stack-allocated variables.
|
|
Revision tags: llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2 |
|
| #
6a556eca |
| 15-Dec-2021 |
Jonathan Peyton <[email protected]> |
[OpenMP][libomp] Add use-all syntax to KMP_HW_SUBSET
This patch allows the user to request all resources of a particular layer (or core-attribute). The syntax of KMP_HW_SUBSET is modified so the num
[OpenMP][libomp] Add use-all syntax to KMP_HW_SUBSET
This patch allows the user to request all resources of a particular layer (or core-attribute). The syntax of KMP_HW_SUBSET is modified so the number of units requested is optional or can be replaced with an '*' character.
e.g., KMP_HW_SUBSET=c:intel_atom@3 will use all the cores after offset 3 e.g., KMP_HW_SUBSET=*c:intel_core will use all the big cores e.g., KMP_HW_SUBSET=*s,*c,1t will use all the sockets, all cores per each socket and 1 thread per core.
Differential Revision: https://reviews.llvm.org/D115826
show more ...
|
| #
97693409 |
| 14-Dec-2021 |
Jonathan Peyton <[email protected]> |
[OpenMP][libomp] Fix compile errors with new KMP_HW_SUBSET changes
Add missing guards around x86-specific code.
Reviewed By: kaz7
Differential Revision: https://reviews.llvm.org/D115664
|
| #
df205995 |
| 30-Nov-2021 |
Jonathan Peyton <[email protected]> |
[OpenMP][libomp] Add core attributes to KMP_HW_SUBSET
Allow filtering of resources based on core attributes. There are two new attributes added: 1) Core Type (intel_atom, intel_core) 2) Core Efficie
[OpenMP][libomp] Add core attributes to KMP_HW_SUBSET
Allow filtering of resources based on core attributes. There are two new attributes added: 1) Core Type (intel_atom, intel_core) 2) Core Efficiency (integer) where the higher the efficiency, the more performant the core On hybrid architectures , e.g., Alder Lake, users can specify KMP_HW_SUBSET=4c:intel_atom,4c:intel_core to select the first four Atom and first four Big cores. The can also use the efficiency syntax. e.g., KMP_HW_SUBSET=2c:eff0,2c:eff1
Differential Revision: https://reviews.llvm.org/D114901
show more ...
|
|
Revision tags: llvmorg-13.0.1-rc1 |
|
| #
a733b18b |
| 21-Oct-2021 |
Peyton, Jonathan L <[email protected]> |
[OpenMP][libomp] Enable HWLOC topology detection of multiple CPU kinds
Teach the HWLOC topology method how to detect Atom and Core types so hybrid CPUs are properly detected and represented when usi
[OpenMP][libomp] Enable HWLOC topology detection of multiple CPU kinds
Teach the HWLOC topology method how to detect Atom and Core types so hybrid CPUs are properly detected and represented when using the HWLOC topology method.
Differential Revision: https://reviews.llvm.org/D112270
show more ...
|
| #
286094af |
| 21-Oct-2021 |
Peyton, Jonathan L <[email protected]> |
[OpenMP][libomp] Improve Windows Processor Group handling within topology
The current implementation of Windows Processor Groups has a separate topology method to handle them. This patch deprecates
[OpenMP][libomp] Improve Windows Processor Group handling within topology
The current implementation of Windows Processor Groups has a separate topology method to handle them. This patch deprecates that specific method and uses the regular CPUID topology method by default and inserts the Windows Processor Group objects in the topology manually.
Notes: * The preference for processor groups is lowered to a value less than socket so that the user will see sockets in the KMP_AFFINITY=verbose output instead of processor groups when sockets=processor groups. * The topology's capacity is modified to handle additional topology layers without the need for reallocation. * If a user asks for a granularity setting that is "above" the processor group layer, then the granularity is adjusted "down" to the processor group since this is the coarsest layer available for threads.
Differential Revision: https://reviews.llvm.org/D112273
show more ...
|
| #
1dd79716 |
| 21-Oct-2021 |
Peyton, Jonathan L <[email protected]> |
[OpenMP][libomp] Add support for offline CPUs in Linux
If some CPUs are offline, then make sure they are not included in the fullMask even if norespect is given to KMP_AFFINITY.
Differential Revisi
[OpenMP][libomp] Add support for offline CPUs in Linux
If some CPUs are offline, then make sure they are not included in the fullMask even if norespect is given to KMP_AFFINITY.
Differential Revision: https://reviews.llvm.org/D112274
show more ...
|
| #
a0afb9d0 |
| 18-Oct-2021 |
Peyton, Jonathan L <[email protected]> |
[OpenMP][libomp] Allow users to specify KMP_HW_SUBSET in any order
Remove restriction forcing users to specify the KMP_HW_SUBSET value in topology order. This patch sorts the user KMP_HW_SUBSET valu
[OpenMP][libomp] Allow users to specify KMP_HW_SUBSET in any order
Remove restriction forcing users to specify the KMP_HW_SUBSET value in topology order. This patch sorts the user KMP_HW_SUBSET value before trying to apply it. For example: 1s,4c,2t is equivalent to 2t,1s,4c
Differential Revision: https://reviews.llvm.org/D112027
show more ...
|
| #
acb3b187 |
| 14-Oct-2021 |
Peyton, Jonathan L <[email protected]> |
[OpenMP][host runtime] Add initial hybrid CPU support
Detect, through CPUID.1A, and show user different core types through KMP_AFFINITY=verbose mechanism. Offer future runtime optimizations __kmp_i
[OpenMP][host runtime] Add initial hybrid CPU support
Detect, through CPUID.1A, and show user different core types through KMP_AFFINITY=verbose mechanism. Offer future runtime optimizations __kmp_is_hybrid_cpu() to know whether running on a hybrid system or not.
Differential Revision: https://reviews.llvm.org/D110435
show more ...
|
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2 |
|
| #
52cac541 |
| 16-Aug-2021 |
AndreyChurbanov <[email protected]> |
[OpenMP] libomp: cleanup: minor fixes to silence static analyzer.
Added couple more checks to silence KlocWork static code analyzer.
Differential Revision: https://reviews.llvm.org/D107348
|
|
Revision tags: llvmorg-13.0.0-rc1 |
|
| #
8b81524c |
| 30-Jul-2021 |
AndreyChurbanov <[email protected]> |
[OpenMP][NFC] libomp: silence warnings on unused variables.
Put declarations/definitions of unused variables under corresponding macros to silence clang build warnings.
Differential Revision: https
[OpenMP][NFC] libomp: silence warnings on unused variables.
Put declarations/definitions of unused variables under corresponding macros to silence clang build warnings.
Differential Revision: https://reviews.llvm.org/D106608
show more ...
|
|
Revision tags: llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2 |
|
| #
cff21556 |
| 15-Jun-2021 |
Joachim Protze <[email protected]> |
[OpenMP] Remove unused variables from libomp code
Several variables were left unused as a result of different patches removing their use.
Two variables have some use: `poll_count` is used by the KM
[OpenMP] Remove unused variables from libomp code
Several variables were left unused as a result of different patches removing their use.
Two variables have some use: `poll_count` is used by the KMP_BLOCKING macro only under certain conditions. Adding (void) to tell the compiler to ignore the unused variable.
`padding` is a dummy stack allocation with no intent to be used. Also adding (void) to make the compiler ignore the unused variable.
Differential Revision: https://reviews.llvm.org/D104303
show more ...
|
|
Revision tags: llvmorg-12.0.1-rc1 |
|
| #
2020c981 |
| 20-May-2021 |
Peyton, Jonathan L <[email protected]> |
[OpenMP] Add L2-Tile equivalence for KNL
When on KNL and L2 or Tile layer is detected, manually add the corresponding layer which is equivalent.
Differential Revision: https://reviews.llvm.org/D102
[OpenMP] Add L2-Tile equivalence for KNL
When on KNL and L2 or Tile layer is detected, manually add the corresponding layer which is equivalent.
Differential Revision: https://reviews.llvm.org/D102865
show more ...
|
| #
c765d140 |
| 10-May-2021 |
Peyton, Jonathan L <[email protected]> |
[OpenMP] Fix hidden helper + affinity
When KMP_AFFINITY is set, each worker thread's gtid value is used as an index into the place list to determine the thread's placement. With hidden helpers enabl
[OpenMP] Fix hidden helper + affinity
When KMP_AFFINITY is set, each worker thread's gtid value is used as an index into the place list to determine the thread's placement. With hidden helpers enabled, this gtid value is shifted down leading to unexpected shifted thread placement. This patch restores the previous behavior by adjusting the mask index to take the number of hidden helper threads into account.
Hidden helper threads are given the full initial mask and do not participate in any of the other affinity mechanisms (place partitioning, balanced affinity). Their affinity is only printed for debug builds.
Differential Revision: https://reviews.llvm.org/D101882
show more ...
|
| #
9982f33e |
| 16-Apr-2021 |
Peyton, Jonathan L <[email protected]> |
[OpenMP] Refactor/Rework topology discovery code
This patch does the following:
1) Introduce kmp_topology_t as the runtime-friendly structure (the corresponding global variable is __kmp_topology) t
[OpenMP] Refactor/Rework topology discovery code
This patch does the following:
1) Introduce kmp_topology_t as the runtime-friendly structure (the corresponding global variable is __kmp_topology) to determine the exact machine topology which can vary widely among current and future architectures. The current design is not easy to expand beyond the assumed three layer topology: sockets, cores, and threads so a rework capable of using the existing KMP_AFFINITY mechanisms is required.
This new topology structure has: * The depth and types of the topology * Ratio count for each consecutive level (e.g., number of cores per socket, number of threads per core) * Absolute count for each level (e.g., 2 sockets, 16 cores, 32 threads) * Equivalent topology layer map (e.g., Numa domain is equivalent to socket, L1/L2 cache equivalent to core) * Whether it is uniform or not
The hardware threads are represented with the kmp_hw_thread_t structure. This structure contains the ids (e.g., socket 0, core 1, thread 0) and other information grabbed from the previous Address structure. The kmp_topology_t structure contains an array of these.
2) Generalize the KMP_HW_SUBSET envirable for the new kmp_topology_t structure. The algorithm doesn't assume any order with tiles,numa domains,sockets,cores,threads. Instead it just parses the envirable, makes sure it is consistent with the detected topology (including taking into account equivalent layers) and then trims away the unneeded subset of hardware threads. To enable this, a new kmp_hw_subset_t structure is introduced which contains a vector of items (hardware type, number user wants, offset). Any keyword within __kmp_hw_get_keyword() can be used as a name and can be shortened as well. e.g., KMP_HW_SUBSET=1s,2numa,4tile,2c,3t can be used on the KNL SNC-4 machine.
3) Simplify topology detection functions so they only do the singular task of detecting the machine's topology. Printing, and all canonicalizing functionality is now done afterwards. So many lines of duplicated code are eliminated.
4) Add new ll_caches and numa_domains to OMP_PLACES, and consequently, KMP_AFFINITY's granularity setting. All the names within __kmp_hw_get_keyword() are available for use in OMP_PLACES or KMP_AFFINITY's granularity setting.
5) Simplify and future-proof code where explicit lists of allowed affinity settings keywords inside if() conditions.
6) Add x86 CPUID leaf 4 cache detection to existing x2apic id method so equivalent caches could be detected (in particular for the ll_caches place).
Differential Revision: https://reviews.llvm.org/D100997
show more ...
|
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3 |
|
| #
1df6e58e |
| 25-Feb-2021 |
AndreyChurbanov <[email protected]> |
[OpenMP] libomp minor cleanup
Cleanup changes: - check value read from file; - remove dead code; - make unsigned variable to read hexadecimal number to; - add debug assertion to check ref count.
Di
[OpenMP] libomp minor cleanup
Cleanup changes: - check value read from file; - remove dead code; - make unsigned variable to read hexadecimal number to; - add debug assertion to check ref count.
Differential Revision: https://reviews.llvm.org/D96893
show more ...
|
|
Revision tags: llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3 |
|
| #
55dff8b2 |
| 02-Feb-2021 |
Peyton, Jonathan L <[email protected]> |
[OpenMP] Update HWLOC code for die level detection
Differential Revision: https://reviews.llvm.org/D96748
|
| #
309b00a4 |
| 20-Feb-2021 |
Shilei Tian <[email protected]> |
[OpenMP][NFC] clang-format the whole openmp project
Same script as D95318. Test files are excluded.
Reviewed By: AndreyChurbanov
Differential Revision: https://reviews.llvm.org/D97088
|
| #
b3d84790 |
| 12-Feb-2021 |
Martin Storsjö <[email protected]> |
[OpenMP] Add void casts to silence unused variable warnings
These variables are used only in certain build configurations, or marked with a todo comment indicating that they should be used/checked/r
[OpenMP] Add void casts to silence unused variable warnings
These variables are used only in certain build configurations, or marked with a todo comment indicating that they should be used/checked/reported.
Differential Revision: https://reviews.llvm.org/D96582
show more ...
|
| #
ffca74b8 |
| 02-Feb-2021 |
Peyton, Jonathan L <[email protected]> |
[OpenMP] Fix sign comparison warnings from GCC
New affinity patch introduced legitimate sign-compare warnings that clang doesn't report but GCC-10 does. This removes the warnings by changing two var
[OpenMP] Fix sign comparison warnings from GCC
New affinity patch introduced legitimate sign-compare warnings that clang doesn't report but GCC-10 does. This removes the warnings by changing two variables types to unsigned.
Differential Revision: https://reviews.llvm.org/D95818
show more ...
|
|
Revision tags: llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2 |
|
| #
598c590b |
| 15-Jan-2021 |
Peyton, Jonathan L <[email protected]> |
[OpenMP] Add cpuid leaf 1f topology discovery
This patch adds the new algorithm for topology discovery using cpuid leaf 1f. Only the new die level is detected and integrated into the current affini
[OpenMP] Add cpuid leaf 1f topology discovery
This patch adds the new algorithm for topology discovery using cpuid leaf 1f. Only the new die level is detected and integrated into the current affinity mechanisms including KMP_AFFINITY (granularity level and compact/scatter algorithm), OMP_PLACES=dies, and KMP_HW_SUBSET.
Differential Revision: https://reviews.llvm.org/D95157
show more ...
|