summaryrefslogtreecommitdiffstats
path: root/openmp/runtime
Commit message (Collapse)AuthorAgeFilesLines
...
* remove duplicate symbol version script entriesEd Maste2017-07-071-3/+0
| | | | | | | | GNU ld ignores duplicates, but lld produces a warning. Differential Revision: https://reviews.llvm.org/D35121 llvm-svn: 307399
* Fix wrong website in messagesJonathan Peyton2017-07-051-2/+2
| | | | | | | | | | | Address user message bug where the messages were sending users to Intel's website instead of the LLVM OpenMP runtime websites. Bugzilla: https://bugs.llvm.org/show_bug.cgi?id=32892 Differential Revision: https://reviews.llvm.org/D35018 llvm-svn: 307206
* OpenMP RTL cleanup: eliminated warnings with -Wcast-qual.Andrey Churbanov2017-07-0322-349/+376
| | | | | | | | | | | Changes are: replaced C-style casts with cons_cast and reinterpret_cast; type of several counters changed to signed; type of parameters of 32-bit and 64-bit AND and OR intrinsics changes to unsigned; changed files formatted using clang-format version 3.8.1. Differential Revision: https://reviews.llvm.org/D34759 llvm-svn: 307020
* Make test/parallel/omp_nested.c not use so many threadsHal Finkel2017-06-271-0/+5
| | | | | | | | | | | | | | | | | | | I've found it very difficult to get test/parallel/omp_nested.c to pass consistently across my build environments. The problem is that it creates N^2 threads (it is testing nested parallel regions), and that often exceeds the thread limits on systems with many cores. We do raise the process limits in lit, and that often helps, but if running lit with a smaller number of threads or on a system where we're otherwise resource constrained, this particular test tends to fail (because the runtime cannot create a sufficient number of threads). This seems to work: if the maximum number of threads is more than some small number, then cap the number of threads used for the parallel region. The choice of 4 here is somewhat arbitrary. Differential Revision: https://reviews.llvm.org/D32033 llvm-svn: 306357
* Set affinity to none/false in child processesJonathan Peyton2017-06-151-1/+12
| | | | | | | | | | | | Reset affinity to none (false for proc-bind-var) so that threads in the child processes are not bound tightly, unless the user explicitly sets this in KMP_AFFINITY/OMP_PROC_BIND, in child processes. This can improve performance for scripting languages which fork for parallelism like Python's multiprocessing module. Differential Revision: https://reviews.llvm.org/D34154 llvm-svn: 305513
* Replace platform macro with KMP_MIC_SUPPORTEDJonathan Peyton2017-06-135-15/+19
| | | | | | Differential Revision: https://reviews.llvm.org/D34119 llvm-svn: 305307
* Reset initial affinity in children processesJonathan Peyton2017-06-132-0/+9
| | | | | | | | | | | | | | | | If OpenMP is initialized before fork()-ing occurs and affinity is set to something like compact, then the master thread will be pinned to a single HW thread/core after initialization. If the master (or any other thread) then forks N processes, all N processes will then be pinned to that same single HW thread/core. To reset the affinity for the new child process, the atfork handler for the child process can call kmp_set_thread_affinity_mask_initial() to reset its affinity to the initial affinity of the application before it re-initializes libomp. The parent process will not be affected and still keeps its affinity setting. Differential Revision: https://reviews.llvm.org/D34118 llvm-svn: 305306
* Fix static initializers for locks.Jonathan Peyton2017-06-061-4/+5
| | | | | | | | | | | Fix static initializers to use the proper unlocked value for the poll field of the tas and futex locks. Patch by Terry Wilmarth Differential Revision: https://reviews.llvm.org/D33794 llvm-svn: 304828
* OpenMP 4.5: implemented support of schedule(simd:guided) andAndrey Churbanov2017-06-057-3/+1160
| | | | | | | | | | schedule(simd:runtime) - library part. Compiler generation should use newly introduced scheduling kinds kmp_sch_guided_simd = 46, kmp_sch_runtime_simd = 47, as parameters to __kmpc_dispatch_init_* entries. Differential Revision: https://reviews.llvm.org/D31602 llvm-svn: 304724
* Re-enable assertion after the problem that caused it to be hit had been fixedAndrey Churbanov2017-06-011-5/+0
| | | | | | Differential Revision: https://reviews.llvm.org/D31421 llvm-svn: 304443
* Fix minor formatting issuesJonathan Peyton2017-06-014-35/+27
| | | | | | | | | | | Some code was restructured to move it under KMP_DEBUG. The rest is formatting changes to fix some things broken by clang-format Patch by Terry Wilmarth Differential Revision: https://reviews.llvm.org/D33744 llvm-svn: 304438
* Fix for KMP_AFFINITY=disabled and KMP_TOPOLOGY_METHOD=hwlocJonathan Peyton2017-05-314-1/+36
| | | | | | | | | | | | With these settings, the create_hwloc_map() method was being called causing an assert(). After some consideration, it was determined that disabling affinity explicitly should just disable hwloc as well. i.e., KMP_AFFINITY overrides KMP_TOPOLOGY_METHOD. This lets the user know that the Hwloc mechanism is being ignored when KMP_AFFINITY=disabled. Differential Revision: https://reviews.llvm.org/D33208 llvm-svn: 304344
* Address default pinning OpenMP process with multiple processor groupsJonathan Peyton2017-05-311-2/+30
| | | | | | | | | | | | | | | | | | | This change checks if the initial affinity mask is equal to exactly one Windows processor group's affinity mask. If it is, then the code does not respect the initial affinity mask and uses the entire machine instead. The reasoning behind this is that, by default, Windows assigns exactly one processor group as the initial affinity mask even when there are multiple Windows processor groups available. User's typically want to use the whole machine, so we ignore this special case and use the entire machine. If the initial affinity mask is a proper subset of one group, or spans multiple groups, then the initial affinity mask is respected since we can assume that the operating system did not assign this initial affinity mask. This change only affects machines with multiple processor groups Differential Revision: https://reviews.llvm.org/D33210 llvm-svn: 304343
* Fix for KMP_AFFINITY=respect with multiple processor groupsJonathan Peyton2017-05-151-3/+2
| | | | | | | | | An assert() was being tripped when KMP_AFFINITY=respect + Multiple Processor Groups. Let __kmp_affinity_create_proc_group_map() function be able to create address2os object which contains a single group by deleting restriction that process affinity mask must span multiple groups. llvm-svn: 303101
* Remove some outdated commentsJonathan Peyton2017-05-151-11/+0
| | | | llvm-svn: 303086
* Add the .clang-format file which the formatting was based onJonathan Peyton2017-05-151-0/+91
| | | | llvm-svn: 303079
* Clang-format and whitespace cleanup of source codeJonathan Peyton2017-05-1275-54486/+53500
| | | | | | | | | | | | | This patch contains the clang-format and cleanup of the entire code base. Some of clang-formats changes made the code look worse in places. A best effort was made to resolve the bulk of these problems, but many remain. Most of the problems were mangling line-breaks and tabbing of comments. Patch by Terry Wilmarth Differential Revision: https://reviews.llvm.org/D32659 llvm-svn: 302929
* Fix Hwloc API IncompatibilityJonathan Peyton2017-04-252-5/+11
| | | | | | | | | | | Older Hwloc libraries (< 1.10.0) don't offer the HWLOC_OBJ_NUMANODE nor HWLOC_OBJ_PACKAGE types. Instead they are named HWLOC_OBJ_NODE and HWLOC_OBJ_SOCKET instead. This patch just defines the newer names based on the older names when using an older Hwloc. Differential Revision: https://reviews.llvm.org/D32496 llvm-svn: 301349
* [OpenMP] Add missing parenthesis which triggers a compile errorGeorge Rokos2017-04-251-1/+1
| | | | | | Differential Revision: https://reviews.llvm.org/D32490 llvm-svn: 301318
* Fix crash in invoking microtask on ios arm64.Andrey Churbanov2017-04-172-5/+26
| | | | | | | | Patch by Ni Hui. Differential Revision: https://reviews.llvm.org/D31923 llvm-svn: 300448
* KMP_HW_SUBSET extended with NUMA support when HWLOC enabledAndrey Churbanov2017-04-137-380/+834
| | | | | | Differential Revision: https://reviews.llvm.org/D31600 llvm-svn: 300220
* Test cancellation_for_sections.c expectedly fails on GCCOlga Malysheva2017-04-041-0/+1
| | | | llvm-svn: 299437
* Reset cancellation status for 'parallel', 'sections' and 'for' constracts.Olga Malysheva2017-04-043-0/+71
| | | | | | | | | Without this fix cancellation status for parallel, sections and for persists across construct boundaries. Differential Revision: https://reviews.llvm.org/D31419 llvm-svn: 299434
* Test check-in, comment changedOlga Malysheva2017-04-041-1/+2
| | | | llvm-svn: 299428
* Fix for bug https://llvm.org/bugs/show_bug.cgi?id=32456Andrey Churbanov2017-03-311-0/+5
| | | | | | | | ITT Notify disabled for static build of OpenMP RTL. Differential Revision: https://reviews.llvm.org/D31466 llvm-svn: 299230
* Fix for bug https://llvm.org/bugs/show_bug.cgi?id=30889Andrey Churbanov2017-03-281-1/+1
| | | | | | | | Condition adjusted for Debug assertion. Differential Revision: https://reviews.llvm.org/D29638 llvm-svn: 298915
* GOMP compatibility: add missing OpenMP4.0 task deps handling codePaul Osmialowski2017-03-231-1/+22
| | | | | | Differential Revision: https://reviews.llvm.org/D31071 llvm-svn: 298605
* Fixed intermittent hang on tests with "target teams if(0)" construct with no ↵Andrey Churbanov2017-03-212-6/+74
| | | | | | | | parallel inside. Differential Revision: https://reviews.llvm.org/D29597 llvm-svn: 298373
* Stride in distribute parallel for loops with no chunk size.Andrey Churbanov2017-03-211-0/+1
| | | | | | | | Patch by George Rokos. Differential Revision: https://reviews.llvm.org/D24486 llvm-svn: 298362
* Minor improvement of KMP_YIELD_NOW() macro.Jonathan Peyton2017-03-202-7/+11
| | | | | | | | | | | This change slightly improves performance of KMP_YIELD_NOW() macro, by using _rdtsc() intrinsic function if possible. Patch by Hansang Bae Differential Revision: https://reviews.llvm.org/D31008 llvm-svn: 298314
* Fix incorrect initial value of __kmp_affinity_type.Jonathan Peyton2017-03-201-0/+1
| | | | | | | | | | | | | Affinity initialization code expects __kmp_affinity_type has the value affinity_default by default, but the cleanup code does not properly set the value back to affinity_default. This may introduce some issues when multiple roots are trying to initialize/uninitialize the runtime successively. Patch by Hansang Bae Differential Revision: https://reviews.llvm.org/D31012 llvm-svn: 298313
* Fix assertion failure when 'proclist' is used without 'explicit' in KMP_AFFINITYJonathan Peyton2017-03-101-2/+5
| | | | | | | | | | | | This change fixes an assertion failure the in case KMP_AFFINITY is set with 'proclist' specified but without 'explicit' e.g., KMP_AFFINITY=verbose,proclist=[0-31] Patch by Olga Malysheva Differential Revision: https://reviews.llvm.org/D30404 llvm-svn: 297480
* Fix GNU strerror_r check for Android.Dan Albert2017-03-071-1/+3
| | | | | | | | | | | | | | | | | Summary: Bionic didn't get a GNU style strerror_r until Android M. Until then we unconditionally exposed the POSIX one. Expand the check to account for this. Reviewers: pirama, AndreyChurbanov, jlpeyton Reviewed By: jlpeyton Subscribers: openmp-commits, srhines Differential Revision: https://reviews.llvm.org/D30056 llvm-svn: 297235
* OpenMP version 5.0 addedJonathan Peyton2017-03-0610-12/+2753
| | | | | | | | | | | | Add build option LIBOMP_OMP_VERSION=50, 5.0 headers, and add the year/month associated with OpenMP 5.0 in relevant source locations. Also, remove the deprecated LIBOMP_OMP_VERSION=41 option. Patch by Olga Malysheva Differential Revision: https://reviews.llvm.org/D30450 llvm-svn: 297083
* Mixed type atomic routines added to Windows DLLJonathan Peyton2017-03-062-0/+8
| | | | | | | | Patch by Olga Malysheva Differential Revision: https://reviews.llvm.org/D30408 llvm-svn: 297082
* Removing couple unnecessary architecture guards.Jonathan Peyton2017-02-281-2/+2
| | | | | | | | | This section of code (__kmp_test_then_* functions) is guarded by (KMP_ARCH_X86 || KMP_ARCH_X86_64) so it does not make sense to have other architecture guards inside this section. Non-x86 architectures always use intrinsics (__sync_*) llvm-svn: 296525
* [test] Try to link -latomic to provide atomics when availableMichal Gorny2017-02-243-1/+16
| | | | | | | | | | | | | | | | | | | When using -rtlib=libgcc, the fallback implementation of __atomic_* builtins is provided via libatomic (included in GCC). However, neither GCC itself nor clang link libatomic implicitly, and it seems that GCC upstream expects projects to link it explicitly as necessary. Since compiler-rt provides __atomic_* builtins directly in the main library, check if they are provided by the default libraries first. If they are not, check if -latomic is available to provide them and add explicit -latomic for tests in this case. This fixes unresolved __atomic_load() references when running openmp tests on i386 with libgcc backend. Differential Revision: https://reviews.llvm.org/D30083 llvm-svn: 296183
* [OpenMP] Missing virtual destructor in KMPAffinityGeorge Rokos2017-02-221-0/+2
| | | | | | | | Added virtual destructor in a class containing virtual functions. Differential Revision: https://reviews.llvm.org/D30271 llvm-svn: 295896
* [stats] add stats-gathering for static_steal scheduling methodJonathan Peyton2017-02-172-0/+8
| | | | | | | | Add counter to count number of static_steal for loops Add counter for number of chunks executed per static_steal for loop Add counter for number of chunks stolen per static_steal for loop llvm-svn: 295461
* Run-time library part of OpenMP 5.0 task reduction implementation.Andrey Churbanov2017-02-164-1/+602
| | | | | | | | | Added test kmp_task_reduction_nest.cpp which has an example of possible compiler codegen. Differential Revision: https://reviews.llvm.org/D29600 llvm-svn: 295343
* Added an option to bind initial thread at the start of applicationAndrey Churbanov2017-02-161-3/+8
| | | | | | | | via setting envirable KMP_INITIAL_THREAD_BIND=1. Differential Revision: https://reviews.llvm.org/D29665 llvm-svn: 295339
* Enable yield cycle on LinuxJonathan Peyton2017-02-154-11/+14
| | | | | | | | | | | | This change allows the runtime to turn __kmp_yield() on/off repeatedly on Linux. This feature was removed when disabling monitor thread, but there are applications that perform better with this feature on. Patch by Hansang Bae Differential Revision: https://reviews.llvm.org/D29227 llvm-svn: 295203
* [OpenMP] New Tsan annotations to remove false positive on reduction and barriersJonas Hahnfeld2017-02-152-21/+31
| | | | | | | | | | | Added new ThreadSanitizer annotations to remove false positives with OpenMP reduction. Cleaned up Tsan annotations header file from unused annotations. Patch by Simone Atzeni! Differential Revision: https://reviews.llvm.org/D29202 llvm-svn: 295158
* Fix a race in shutdown when tasking is used.Andrey Churbanov2017-02-064-1/+41
| | | | | | | | Patch by Terry Wilmarth. Differential Revision: https://reviews.llvm.org/D28377 llvm-svn: 294214
* Correct wrong comment in bug_nested_proxy_task.cJonas Hahnfeld2017-01-301-1/+1
| | | | | | The nested proxy task does not have dependencies. llvm-svn: 293472
* Cleanup: put i_maxmin members and ___kmp_size_type into traits_tJonathan Peyton2017-01-273-79/+27
| | | | | | | | | Put the duplicated i_maxmin into traits_t by adding new members max_value and min_value. Put ___kmp_size_type into traits_t by adding member type_size. Differential Revision: https://reviews.llvm.org/D28847 llvm-svn: 293316
* Printing OS thread id, when KMP_AFFINITY is set.Jonathan Peyton2017-01-273-7/+17
| | | | | | | | Patch by Vishakha Agrawal Differential Revision: https://reviews.llvm.org/D28873 llvm-svn: 293315
* Fix performance issue incurred by removing monitor thread.Jonathan Peyton2017-01-273-21/+27
| | | | | | | | | | | | | | | | When the monitor thread is used, most threads in the team directly go to sleep if the copy of bt_intervals/bt_set is not available in the cache, and this happens at least once per thread in the wait function, making the overall performance slightly better. This change tries to mimic this behavior by using the bt_intervals cache, which simply keeps the blocktime interval in terms of the platform-dependent ticks or nanoseconds. Patch by Hansang Bae Differential Revision: https://reviews.llvm.org/D28906 llvm-svn: 293312
* Use C++11 static_assert() for build asserts.Jonathan Peyton2017-01-181-21/+2
| | | | llvm-svn: 292350
* Fix memory error in case of reinit using kmp_set_defaults() for lock code.Jonathan Peyton2017-01-182-0/+59
| | | | | | | | The lock tables were being reallocated if kmp_set_defaults() was called. In the env_init code it says that the user should be able to switch between different KMP_CONSISTENCY_CHECK values which is what this change enables. llvm-svn: 292349
OpenPOWER on IntegriCloud