aboutsummaryrefslogtreecommitdiff
path: root/openmp/runtime/src/z_Linux_util.cpp
AgeCommit message (Collapse)AuthorFilesLines
2025-06-04[OpenMP] Don't use libproc on Solaris (#142379)Rainer Orth1-20/+10
`openmp` currently doesn't compile on 32-bit Solaris: ``` FAILED: projects/openmp/runtime/src/CMakeFiles/omp.dir/z_Linux_util.cpp.o [...] In file included from openmp/runtime/src/z_Linux_util.cpp:78: In file included from /usr/include/libproc.h:25: In file included from /usr/include/gelf.h:10: /usr/include/libelf.h:22:2: error: "large files are not supported by libelf" 22 | #error "large files are not supported by libelf" | ^ In file included from openmp/runtime/src/z_Linux_util.cpp:78: /usr/include/libproc.h:42:2: error: "Cannot use libproc in the large file compilation environment" 42 | #error "Cannot use libproc in the large file compilation environment" | ^ ``` Looking closer, there's no point in using `Pgrab` (the only interface from `<libproc.h>`) at all: the resulting `ps_prochandle_t *` isn't used in the remainder of the code and the original PR #82930 gives no indication why it is deemed necessary/useful. While at it, this patch switches to use `/proc/self/xmap`, matching `compiler-rt`'s `sanitizer_procmaps_solaris.cpp`, and makes some minor formatting fixes. Tested on `sparc-sun-solaris2.11`, `sparcv9-sun-solaris2.11`, `i386-pc-solaris2.11`, and `amd64-pc-solaris2.11`.
2025-04-17[OpenMP] Disable load balance on Haiku (#136082)Brad Smith1-4/+0
Haiku does not have a means of retrieving the desired information and the -1 setting causes the code to fallback anyway.
2025-04-01[OpenMP] [AIX] Add missing } in openmp/runtime/src/z_Linux_util.cpp (#133973)Mark Danial1-0/+2
Changes from https://github.com/llvm/llvm-project/pull/133034 removed a `}` presumably accidentally that are causing failures in the AIX flang bot.
2025-03-26[OpenMP] Add support for Haiku (#133034)Brad Smith1-7/+14
Co-authored-by: Jérôme Duval <jerome.duval@gmail.com>
2024-08-31[OpenMP] Support setting POSIX thread name on *BSD's and Solaris (#106489)Brad Smith1-2/+11
2024-08-13[OpenMP] Rename worker threads for improved debuggability (#102065)HighW4y2H3ll1-0/+7
Rename the worker threads "openmp_worker" --------- Co-authored-by: h2h <h2h@meta.com> Co-authored-by: Matthias Braun <matze@braunis.de>
2024-05-10[OpenMP][AIX] Implement __kmp_get_load_balance() for AIX (#91520)Xing Xue1-9/+74
AIX has the `/proc` filesystem where `/proc/<pid>/lwp/<tid>/lwpsinfo` has the thread state in binary, similar to Linux's `/proc/<pid>/task/<tid>/stat` where the state is in ASCII. However, the definition of state info `R` in `lwpsinfo` is `runnable`. In Linux, state `R` means the thread is `running`. Therefore, `lwpsinfo` is not ideal for our purpose of getting the current load of the system. This patch uses `perfstat_cpu()` in AIX system library `libperfstat.a` to obtain the number of threads current running on logical CPUs.
2024-04-30[OpenMP][AIX] Implement __kmp_is_address_mapped() for AIX (#90516)Xing Xue1-4/+45
This patch implements `__kmp_is_address_mapped()` for AIX by calling `loadquery()` to get the load info of the process and then checking if the address falls within the range of the data segment of one of the loaded modules.
2024-04-12[OpenMP] Fix re-locking hang found in issue 86684 (#88539)Jonathan Peyton1-6/+6
This was initially reported here (including stacktraces): https://stackoverflow.com/questions/78183545/does-compiling-imagick-with-openmp-enabled-in-freebsd-13-2-cause-sched-yield If `__kmp_register_library_startup()` detects that another instance of the library is present, `__kmp_is_address_mapped()` is eventually called. which uses `kmpc_alloc()` to allocate memory. This function calls `__kmp_entry_thread()` to access the thread-local memory pool, which is a bad idea during initialization. This macro internally calls `__kmp_get_global_thread_id_reg()` which sets the bootstrap lock at the beginning (before calling `__kmp_register_library_startup()`). The fix is to use `KMP_INTERNAL_MALLOC()`/`KMP_INTERNAL_FREE()` instead of `kmpc_malloc()`/`kmpc_free()`. `KMP_INTERNAL_MALLOC` and `KMP_INTERNAL_FREE` do not use any bootstrap locks. They just translate to `malloc()`/`free()` and are meant to be used during library initialization before other library-specific allocators have been initialized. Fixes: #86684
2024-04-02[OpenMP] get logical core count on modern apple platform (#87231)nihui1-15/+2
`hw.logicalcpu` returns the available logical core count Fix build error for watchOS ``` runtime/src/z_Linux_util.cpp:1821:8: error: 'host_info' is unavailable: not available on watchOS rc = host_info(mach_host_self(), HOST_BASIC_INFO, (host_info_t)&info, &num); ^ /Applications/Xcode_15.2.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS10.2.sdk/usr/include/mach/mach_host.h:82:15: note: 'host_info' has been explicitly marked unavailable here kern_return_t host_info ^ 1 warning and 1 error generated. make[2]: *** [runtime/src/CMakeFiles/omp.dir/z_Linux_util.cpp.o] Error 1 ```
2024-04-02[OpenMP] arm64_32 port for Apple WatchOS (#87246)nihui1-1/+2
detect `aarch64_32` with compiler defined macro `__ARM64_ARCH_8_32__` reuse ARM `__kmp_unnamed_critical_addr` and add `KMP_PREFIX_UNDERSCORE` macro like AARCH64 reuse AARCH64 `__kmp_invoke_microtask` build log for watchos armv7k + arm64_32 and watchos simulator x86_64 + arm64 https://github.com/nihui/action-protobuf/actions/runs/8520684611/job/23337305030
2024-03-22[OpenMP][AIX] Affinity implementation for AIX (#84984)Xing Xue1-6/+33
This patch implements `affinity` for AIX, which is quite different from platforms such as Linux. - Setting CPU affinity through masks and related functions are not supported. System call `bindprocessor()` is used to bind a thread to one CPU per call. - There are no system routines to get the affinity info of a thread. The implementation of `get_system_affinity()` for AIX gets the mask of all available CPUs, to be used as the full mask only. - Topology is not available from the file system. It is obtained through system SRAD (Scheduler Resource Allocation Domain). This patch has run through the libomp LIT tests successfully with `affinity` enabled.
2024-03-14[openmp][wasm] Fix microtask type mismatch (#84355)Andrew Brown1-30/+77
When OpenMP is compiled for WebAssembly (see #71297), it invokes a microtask via a `switch` statement that dispatches to the `void *` microtask pointer with spelled-out arguments (not varargs). As #83329 points out, however, this can result in a type mismatch when the indirect call is executed by WebAssembly; WebAssembly expects the called pointer to have the precise type of the call site. This change fixes the issue by bringing back the approach in [D142593] of type-casting all the `switch` arms to the precise type. This fixes #83329. [D142593]: https://reviews.llvm.org/D142593
2024-03-10[openmp] adding affinity support to DragonFlyBSD. (#84672)David CARLIER1-4/+4
2024-03-09[openmp] porting affinity feature to netbsd. (#84618)David CARLIER1-3/+9
netbsd supports the portable hwloc's layer as well. for a hardware with 4 cpus, a cpu set is 4 and maxcpus is 256.
2024-03-08[OpenMP] Implements __kmp_is_address_mapped for Solaris/Illumos. (#82930)David CARLIER1-4/+68
Also fixing OpenMP build itself for this platform.
2024-02-25[OpenMP] Implement __kmp_is_address_mapped on DragonFlyBSD. (#82895)David CARLIER1-5/+46
implement internal __kmp_is_address_mapped.
2024-01-09[openmp][AIX] Add AIX to __kmp_set_stack_info() (#77421)Brad Smith1-1/+1
2024-01-08[openmp][AIX]Initial changes for porting to AIX (#76841)Xing Xue1-5/+16
This PR contains initial changes for building and testing libomp on AIX. More changes will follow. - `KMP_OS_AIX` is defined for the AIX platform - `KMP_ARCH_PPC` is defined for 32-bit PPC - `KMP_ARCH_PPC_XCOFF` and `KMP_ARCH_PPC64_XCOFF` are for 32- and 64-bit XCOFF object formats respectively - Assembly file `z_AIX_asm.S` is used for AIX specific assembly code and will be added in a separate PR - The target library is disabled because AIX does not have the device support - OMPT is temporarily disabled
2023-12-14[openmp][wasm] Allow compiling OpenMP to WebAssembly (#71297)Andrew Brown1-3/+13
This change allows building the static OpenMP runtime, `libomp.a`, as WebAssembly. It builds on the work done in [D142593] but goes further in several ways: - it makes the OpenMP CMake files more WebAssembly-aware - it conditions much more code (or code that had been refactored since [D142593]) for `KMP_ARCH_WASM` and `KMP_OS_WASI` - it fixes a Clang crash due to unimplemented common symbols in WebAssembly The commit messages have more details. Please understand this PR as a start, not the completed work, for WebAssembly support in OpenMP. Getting the tests running somehow would be a good next step, e.g.; but what is contained here works, at least with recent versions of [wasi-sdk] and engines that support [wasi-threads]. I suspect the same is true for Emscripten and browsers, but I have not tested that workflow. [D142593]: https://reviews.llvm.org/D142593 [wasi-sdk]: https://github.com/WebAssembly/wasi-sdk [wasi-threads]: https://github.com/WebAssembly/wasi-threads --------- Co-authored-by: Atanas Atanasov <atanas.atanasov@intel.com>
2023-12-11[OpenMP] Change check for OS to check for defined for a macro (#75012)Brad Smith1-1/+1
Check for the existence of the macro instead of checking for Solaris. illumos has this macro in sys/time.h. /export/home/brad/llvm-brad/openmp/runtime/src/z_Linux_util.cpp:77:9: warning: 'TIMEVAL_TO_TIMESPEC' macro redefined [-Wmacro-redefined] 77 | #define TIMEVAL_TO_TIMESPEC(tv, ts) \ | ^ /usr/include/sys/time.h:424:9: note: previous definition is here 424 | #define TIMEVAL_TO_TIMESPEC(tv, ts) { \ | ^
2023-11-17[OpenMP] Add missing pieces in __kmp_launch_worker for Solaris support (#72613)Brad Smith1-2/+2
2023-11-09[OpenMP] Fix a condition for KMP_OS_SOLARIS. (#71831)xingxue-ibm1-1/+1
Line 75 of `z_Linux_util.cpp` checks `#ifdef KMP_OS_SOLARIS` which is always true regardless of the building platform because macro `KMP_OS_SOLARIS` is always defined in line 23 of `kmp_platform.h`: `define KMP_OS_SOLARIS 0`.
2023-11-03Add openmp support to System z (#66081)Neale Ferguson1-1/+1
* openmp/README.rst - Add s390x to those platforms supported * openmp/libomptarget/plugins-nextgen/CMakeLists.txt - Add s390x subdirectory * openmp/libomptarget/plugins-nextgen/s390x/CMakeLists.txt - Add s390x definitions * openmp/runtime/CMakeLists.txt - Add s390x to those platforms supported * openmp/runtime/cmake/LibompGetArchitecture.cmake - Define s390x ARCHITECTURE * openmp/runtime/cmake/LibompMicroTests.cmake - Add dependencies for System z (aka s390x) * openmp/runtime/cmake/LibompUtils.cmake - Add S390X to the mix * openmp/runtime/cmake/config-ix.cmake - Add s390x as a supported LIPOMP_ARCH * openmp/runtime/src/kmp_affinity.h - Define __NR_sched_[get|set]addinity for s390x * openmp/runtime/src/kmp_config.h.cmake - Define CACHE_LINE for s390x * openmp/runtime/src/kmp_os.h - Add KMP_ARCH_S390X to support checks * openmp/runtime/src/kmp_platform.h - Define KMP_ARCH_S390X * openmp/runtime/src/kmp_runtime.cpp - Generate code when KMP_ARCH_S390X is defined * openmp/runtime/src/kmp_tasking.cpp - Generate code when KMP_ARCH_S390X is defined * openmp/runtime/src/thirdparty/ittnotify/ittnotify_config.h - Define ITT_ARCH_S390X * openmp/runtime/src/z_Linux_asm.S - Instantiate __kmp_invoke_microtask for s390x * openmp/runtime/src/z_Linux_util.cpp - Generate code when KMP_ARCH_S390X is defined * openmp/runtime/test/ompt/callback.h - Define print_possible_return_addresses for s390x * openmp/runtime/tools/lib/Platform.pm - Return s390x as platform and host architecture * openmp/runtime/tools/lib/Uname.pm - Set hardware platform value for s390x
2023-11-02[OpenMP] Add support for Solaris/x86_64 (#70593)Brad Smith1-6/+17
Tested on `amd64-pc-solaris2.11`.
2023-10-29[OpenMP] Add missing bit with the Hurd support (#70609)Brad Smith1-1/+1
Looking at 855d09855d8e541176758f38015e8b9b522d6110 it looks like a bit was missing. The padding variable is used further down by the KMP_ALLOCA() function.
2023-10-29[OpenMP] Make use of getloadavg() on *BSD OS's (#70586)Brad Smith1-1/+2
OpenBSD does not have /proc filesystem, neither does FreeBSD (by default).
2023-09-20[OpenMP][VE] Limit the number of threads to create (#66729)Kazushi Marukawa1-0/+8
VE supports up to 64 threads per a VE process. So, we limit the number of threads defined by KMP_MAX_NTH. We also modify the __kmp_sys_max_nth initialization to use KMP_MAX_NTH as a limit.
2023-09-13Fix /tmp approach, and add environment variable method as third fallback ↵Terry Wilmarth1-0/+24
during library registration The /tmp fallback for /dev/shm did not write to a fixed filename, so multiple instances of the runtime would not be able to detect each other. Now, we create the /tmp file in much the same way as the /dev/shm file was created, since mkstemp approach would not work to create a file that other instances of the runtime would detect. Also, add the environment variable method as a third fallback to /dev/shm and /tmp for library registration, as some systems do not have either. Also, add ability to fallback to a subsequent method should a failure occur during any part of the registration process. When unregistering, it is assumed that the method chosen during registration should work, so errors at that point are ignored. This also avoids a problem with multiple threads trying to unregister the library.
2023-09-10[OpenMP][VE] Support OpenMP runtime on VEKazushi (Jam) Marukawa1-1/+1
Support OpenMP runtime library on VE. This patch makes OpenMP compilable for VE architecture. Almost all tests run correctly on VE. Reviewed By: tianshilei1992 Differential Revision: https://reviews.llvm.org/D159401
2023-08-22[OpenMP] Let primary thread gather topology info for each worker threadJonathan Peyton1-1/+1
This change has the primary thread create each thread's initial mask and topology information so it is available immediately after forking. The setting of mask/topology information is decoupled from the actual binding. Also add this setting of topology information inside the __kmp_partition_places mechanism for OMP_PLACES+OMP_PROC_BIND. Without this, there could be a timing window after the primary thread signals the workers to fork where worker threads have not yet established their affinity mask or topology information. Each worker thread will then bind to the location the primary thread sets. Differential Revision: https://reviews.llvm.org/D156727
2023-08-18[OpenMP] Add option to use different units for blocktimeTerry Wilmarth1-4/+7
This change adds the option of using different units for blocktimes specified via the KMP_BLOCKTIME environment variable. The parsing of the environment now recognizes units suffixes: ms and us. If a units suffix is not specified, the default unit is ms. Thus default behavior is still the same, and any previous usage still works the same. Internally, blocktime is now converted to microseconds everywhere, so settings that exceed INT_MAX in microseconds are considered "infinite". kmp_set/get_blocktime are updated to use the units the user specified with KMP_BLOCKTIME, and if not specified, ms are used. Added better range checking and inform messages for the two time units. Large values of blocktime for default (ms) case (beyond INT_MAX/1000) are no longer allowed, but will autocorrect with an INFORM message. The delay for determining ticks per usec was lowered. It is now 1 million ticks which was calculated as ~450us based on 2.2GHz clock which is pretty typical base clock frequency on X86: (1e6 Ticks) / (2.2e9 Ticks/sec) * (1e6 usec/sec) = 454 usec Really short benchmarks can be affected by longer delay. Update KMP_BLOCKTIME docs. Portions of this commit were authored by Johnny Peyton. Differential Revision: https://reviews.llvm.org/D157646
2023-07-31[OpenMP] Introduce hybrid core attributes to OMP_PLACES and KMP_AFFINITYJonathan Peyton1-0/+1
* 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
2023-07-05[OpenMP] Minor improvement in error msg and fixes few coverity reported issuesNawrin Sultana1-1/+4
Differential Revision: https://reviews.llvm.org/D152289
2022-12-08[openmp] Provide an assembly implementation of __kmp_invoke_microtask on ARMMartin Storsjö1-1/+2
This fixes passing an arbitrarily large number of arguments to microtasks, fixing the misc_bugs/many-microtask-args.c testcase on ARM. Differential Revision: https://reviews.llvm.org/D138704
2022-12-06[OpenMP][libomp] Cleanup version script and exported symbolsJonathan Peyton1-1/+7
This patch fixes issues seen once https://reviews.llvm.org/D135402 is applied. The exports_so.txt file attempts to export functions which may not exist depending on which features are enabled/disabled in the OpenMP runtime library. There are not many of these so exporting dummy symbols is feasible. * Export dummy __kmp_reset_stats() function when stats is disabled. * Export dummy debugging data when USE_DEBUGGER is disabled * Export dummy __kmp_itt_[fini|init]_ittlib() functions when ITT Notify is disabled * Export dummy __kmp_reap_monitor() function when KMP_USE_MONITOR is disabled * Remove __kmp_launch_monitor and __kmp_launch_worker from being exported. They have been static symbols since library inception. Fixes: https://github.com/llvm/llvm-project/issues/58858 Differential Revision: https://reviews.llvm.org/D138049
2022-11-13Move variable declarations out of #if guard, NFCKrzysztof Parzyszek1-3/+4
They are used in other sides of the #if/#else.
2022-10-28[OpenMP][libomp] Add hidden helper affinityJonathan Peyton1-1/+2
Add new hidden helper affinity via the environment variable, KMP_HIDDEN_HELPER_AFFINITY, which allows users to assign thread affinity to hidden helper threads using the same syntax as KMP_AFFINITY. OMP_PLACES/OMP_PROC_BIND have no interaction with KMP_HIDDEN_HELPER_AFFINITY. Differential Revision: https://reviews.llvm.org/D135113
2022-10-28[OpenMP][libomp] Parameterize affinity functionsJonathan Peyton1-16/+14
This patch parameterizes the affinity initialization code to allow multiple affinity settings. Almost all global affinity settings are consolidated and put into a structure kmp_affinity_t. This is in anticipation of the addition of hidden helper affinity which will have the same syntax and semantics as KMP_AFFINITY only for the hidden helper team. Differential Revision: https://reviews.llvm.org/D135109
2022-10-03[OpenMP][libomp] Allow unused-but-set warningsJonathan Peyton1-2/+4
Only a few remaining which are taken care of by this patch. Differential Revision: https://reviews.llvm.org/D133528
2022-09-19[OpenMP] Add LoongArch64 supportSignKirigami1-1/+1
GCC, glibc, binutils, and LLVM have added support for LoongArch64. This patch adds support for LLVM OpenMP following D59880 for RISCV64. Reviewed By: MaskRay, SixWeining Differential Revision: https://reviews.llvm.org/D132925
2022-08-12[openmp] Remove __ANDROID_API__ < 19 workaroundFangrui Song1-7/+0
https://github.com/android/ndk/wiki/Changelog-r24 shows that the NDK has moved forward to at least a minimum target API of 19. Remove old workaround.
2022-07-19[OpenMP][libomp] Fix /dev/shm pollution after forked child process terminatesAndreyChurbanov1-1/+7
Made library registration conditional and skip it in the __kmp_atfork_child handler, postponed it till middle initialization in the child. This fixes the problem of applications those use e.g. popen/pclose which terminate the forked child process. Differential Revision: https://reviews.llvm.org/D125996
2021-11-17[OpenMP][libomp] Add support for offline CPUs in LinuxPeyton, Jonathan L1-2/+6
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
2021-11-17[OpenMP][libomp][NFC] Remove non-ASCII apostrophe in commentJonathan Peyton1-1/+1
2021-07-30[OpenMP][NFC] libomp: silence warnings on unused variables.AndreyChurbanov1-0/+2
Put declarations/definitions of unused variables under corresponding macros to silence clang build warnings. Differential Revision: https://reviews.llvm.org/D106608
2021-07-29[OpenMP] libomp: Add new experimental barrier: two-level distributed barrierTerry Wilmarth1-16/+74
Two-level distributed barrier is a new experimental barrier designed for Intel hardware that has better performance in some cases than the default hyper barrier. This barrier is designed to handle fine granularity parallelism where barriers are used frequently with little compute and memory access between barriers. There is no need to use it for codes with few barriers and large granularity compute, or memory intensive applications, as little difference will be seen between this barrier and the default hyper barrier. This barrier is designed to work optimally with a fixed number of threads, and has a significant setup time, so should NOT be used in situations where the number of threads in a team is varied frequently. The two-level distributed barrier is off by default -- hyper barrier is used by default. To use this barrier, you must set all barrier patterns to use this type, because it will not work with other barrier patterns. Thus, to turn it on, the following settings are required: KMP_FORKJOIN_BARRIER_PATTERN=dist,dist KMP_PLAIN_BARRIER_PATTERN=dist,dist KMP_REDUCTION_BARRIER_PATTERN=dist,dist Branching factors (set with KMP_FORKJOIN_BARRIER, KMP_PLAIN_BARRIER, and KMP_REDUCTION_BARRIER) are ignored by the two-level distributed barrier. Patch fixed for ITTNotify disabled builds and non-x86 builds Co-authored-by: Jonathan Peyton <jonathan.l.peyton@intel.com> Co-authored-by: Vladislav Vinogradov <vlad.vinogradov@intel.com> Differential Revision: https://reviews.llvm.org/D103121
2021-07-12[OpenMP] Remove TSAN annotations from libompJoachim Protze1-4/+0
The annotations in libomp were never built by default. The annotations are also superseded by the annotations which the OMPT tool libarcher.so provides. With respect to libarcher, libomp behaves as if libarcher would be the last element of OMP_TOOL_LIBARARIES. I.e., if no other OMPT tool gets active, libarcher will check if an OpenMP application is built with TSan. Since libarcher gets loaded by default, enabling LIBOMP_TSAN_SUPPORT would result in redundant annotations for TSan, which slightly differ in details and coverage (e.g. task dependencies are not handled well by the annotations in libomp). This patch removes all TSan annotations from the OpenMP runtime code. Differential Revision: https://reviews.llvm.org/D103767
2021-07-01[OpenMP] Fix a few issues with hidden helper taskHansang Bae1-0/+40
This patch includes the following changes to address a few issues when using hidden helper task. - Assertion is triggered when there are inadvertent calls to hidden helper functions on non-Linux OS - Added deinit code in __kmp_internal_end_library function to fix random shutdown crashes - Moved task data access into the lock-guarded region in __kmp_push_task Differential Revision: https://reviews.llvm.org/D105308
2021-06-29Revert "[OpenMP] Add Two-level Distributed Barrier"Johannes Doerfert1-74/+16
This reverts commit 25073a4ecfc9b2e3cb76776185e63bfdb094cd98. This breaks non-x86 OpenMP builds for a while now. Until a solution is ready to be upstreamed we revert the feature and unblock those builds. See: https://reviews.llvm.org/rG25073a4ecfc9b2e3cb76776185e63bfdb094cd98#1005821 and https://reviews.llvm.org/rG25073a4ecfc9b2e3cb76776185e63bfdb094cd98#1005821 The currently proposed fix (D104788) seems not to be ready yet: https://reviews.llvm.org/D104788#2841928