[OpenMP] libomp: Add new experimental barrier: two-level distributed barrierTwo-level distributed barrier is a new experimental barrier designedfor Intel hardware that has better performance in so
[OpenMP] libomp: Add new experimental barrier: two-level distributed barrierTwo-level distributed barrier is a new experimental barrier designedfor Intel hardware that has better performance in some cases than thedefault hyper barrier.This barrier is designed to handle fine granularity parallelism wherebarriers are used frequently with little compute and memory accessbetween barriers. There is no need to use it for codes with fewbarriers and large granularity compute, or memory intensiveapplications, as little difference will be seen between this barrierand the default hyper barrier. This barrier is designed to workoptimally with a fixed number of threads, and has a significant setuptime, so should NOT be used in situations where the number of threadsin a team is varied frequently.The two-level distributed barrier is off by default -- hyper barrieris used by default. To use this barrier, you must set all barrierpatterns to use this type, because it will not work with other barrierpatterns. Thus, to turn it on, the following settings are required:KMP_FORKJOIN_BARRIER_PATTERN=dist,distKMP_PLAIN_BARRIER_PATTERN=dist,distKMP_REDUCTION_BARRIER_PATTERN=dist,distBranching factors (set with KMP_FORKJOIN_BARRIER, KMP_PLAIN_BARRIER,and KMP_REDUCTION_BARRIER) are ignored by the two-level distributedbarrier.Patch fixed for ITTNotify disabled builds and non-x86 buildsCo-authored-by: Jonathan Peyton <[email protected]>Co-authored-by: Vladislav Vinogradov <[email protected]>Differential Revision: https://reviews.llvm.org/D103121
show more ...
Revert "[OpenMP] Add Two-level Distributed Barrier"This reverts commit 25073a4ecfc9b2e3cb76776185e63bfdb094cd98.This breaks non-x86 OpenMP builds for a while now. Until a solution isready to be
Revert "[OpenMP] Add Two-level Distributed Barrier"This reverts commit 25073a4ecfc9b2e3cb76776185e63bfdb094cd98.This breaks non-x86 OpenMP builds for a while now. Until a solution isready to be upstreamed we revert the feature and unblock those builds.See: https://reviews.llvm.org/rG25073a4ecfc9b2e3cb76776185e63bfdb094cd98#1005821and https://reviews.llvm.org/rG25073a4ecfc9b2e3cb76776185e63bfdb094cd98#1005821The currently proposed fix (D104788) seems not to be ready yet: https://reviews.llvm.org/D104788#2841928
[OpenMP] Add Two-level Distributed BarrierTwo-level distributed barrier is a new experimental barrier designedfor Intel hardware that has better performance in some cases than thedefault hyper ba
[OpenMP] Add Two-level Distributed BarrierTwo-level distributed barrier is a new experimental barrier designedfor Intel hardware that has better performance in some cases than thedefault hyper barrier.This barrier is designed to handle fine granularity parallelism wherebarriers are used frequently with little compute and memory accessbetween barriers. There is no need to use it for codes with fewbarriers and large granularity compute, or memory intensiveapplications, as little difference will be seen between this barrierand the default hyper barrier. This barrier is designed to workoptimally with a fixed number of threads, and has a significant setuptime, so should NOT be used in situations where the number of threadsin a team is varied frequently.The two-level distributed barrier is off by default -- hyper barrieris used by default. To use this barrier, you must set all barrierpatterns to use this type, because it will not work with other barrierpatterns. Thus, to turn it on, the following settings are required:KMP_FORKJOIN_BARRIER_PATTERN=dist,distKMP_PLAIN_BARRIER_PATTERN=dist,distKMP_REDUCTION_BARRIER_PATTERN=dist,distBranching factors (set with KMP_FORKJOIN_BARRIER, KMP_PLAIN_BARRIER,and KMP_REDUCTION_BARRIER) are ignored by the two-level distributedbarrier.Differential Revision: https://reviews.llvm.org/D103121
[OpenMP] Fix hierarchical barrierHierarchical barrier is an experimental barrier algorithm that uses aspectsof machine hierarchy to define the barrier tree structure. This patch fixesoffset calcu
[OpenMP] Fix hierarchical barrierHierarchical barrier is an experimental barrier algorithm that uses aspectsof machine hierarchy to define the barrier tree structure. This patch fixesoffset calculation in hierarchical barrier. The offset is used to store infoon a flag about sleeping threads waiting on a location stored in the flag.This commit also fixes a potential deadlock in hierarchical barrier whenusing infinite blocktime by adjusting the offset value of leaf kids so thatit matches the value of leaf state. It also adds testing of default barrierswith infinite blocktime, and also tests hierarchical barrier algorithm withboth default and infinite blocktime.Patch by Terry Wilmarth and Nawrin Sultana.Differential Revision: https://reviews.llvm.org/D94241
omp_barrier.c test fixed in order to reliably and faster run on any number of processorsllvm-svn: 258695
OpenMP Initial testsuite change to purely llvm-lit based testingThis change introduces a check-libomp target which is based upon llvm's littest infrastructure. Each test (generated from the Univer
OpenMP Initial testsuite change to purely llvm-lit based testingThis change introduces a check-libomp target which is based upon llvm's littest infrastructure. Each test (generated from the University of Houston'sOpenMP testsuite) is compiled and then run. For each test, an exit status of 0indicates success and non-zero indicates failure. This way, FileCheck is notneeded. I've added a bit of logic to generate symlinks (libiomp5 and libgomp)in the build tree so that gcc can be tested as well. When building out-of-tree builds, the user will have to provide llvm-lit either by specifying-DLIBOMP_LLVM_LIT_EXECUTABLE or having llvm-lit in their PATH.Differential Revision: http://reviews.llvm.org/D11821llvm-svn: 248211