summaryrefslogtreecommitdiffstats
path: root/openmp/runtime/src
Commit message (Collapse)AuthorAgeFilesLines
...
* [OpenMP][AArch64] Fix compile with LLVM trunk.Eli Friedman2019-05-141-1/+1
| | | | | | | | | | | | | | | | The code is currently using the ambiguous instruction "sub sp, sp, w9, lsl #4". The ARM reference manual says this isn't valid, and it's not clear whether it's supposed to mean uxtw or uxtx. It doesn't matter which instruction we use here, since the high bits of the operand are zero anyway, so I arbitrarily choose uxtw, to preserve the register name. See https://reviews.llvm.org/D60840 for the LLVM patch. Differential Revision: https://reviews.llvm.org/D61770 llvm-svn: 360711
* fixed typo made by commit r360595Andrey Churbanov2019-05-131-1/+2
| | | | llvm-svn: 360602
* Fixed creation of aliases in Windows build.Andrey Churbanov2019-05-131-2/+1
| | | | | | | | | Changed file extension of the destination of the copy of libomp.lib (it was mistakely .dll, now it is .lib) in installation on Windows. Differential Revision: https://reviews.llvm.org/D61673 llvm-svn: 360595
* [OpenMP] Workaround gfortran bugzilla build bug 41755Jonathan Peyton2019-05-082-2/+8
| | | | | | | | | | | | | | | | | | | | This patch provides workaround to allow gfortran to compile the OpenMP Fortran modules. From the gfortran manual: https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gfortran/BOZ-literal-constants.html "Note that initializing an INTEGER variable with a statement such as DATA i/Z'FFFFFFFF'/ will give an integer overflow error rather than the desired result of -1 when i is a 32-bit integer on a system that supports 64-bit integers. The -fno-range-check option can be used as a workaround for legacy code that initializes integers in this manner." Bug filed: https://bugs.llvm.org/show_bug.cgi?id=41755 Differential Revision: https://reviews.llvm.org/D61603 llvm-svn: 360299
* Add non-SSE wrapper for __kmp_{load,store}_mxcsrDimitry Andric2019-05-061-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: To be able to successfully build OpenMP on FreeBSD/i386, which still uses i486 as its default processor, I had to provide wrappers for the `__kmp_load_mxcsr` and `__kmp_store_mxcsr` functions. If the compiler signals that SSE is not available, loading and storing mxcsr does not make sense anway, so in that case the inline functions are empty. This gives the minimum amount of code churn. See also https://svnweb.freebsd.org/changeset/base/345283 Reviewers: emaste, jlpeyton, Hahnfeld Reviewed By: jlpeyton Subscribers: hfinkel, krytarowski, jdoerfert, openmp-commits, llvm-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D60916 llvm-svn: 360062
* Enable OpenMP build for 32-bit FreeBSDDimitry Andric2019-05-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: To be able to successfully build OpenMP on 32-bit FreeBSD, such as FreeBSD/i386, I first had to provide a few wrappers (see D60916), and then add `KMP_OS_FREEBSD` to the list of defines checked for 32-bit architectures in `kmp_runtime.cpp`. I have successfully built libomp.so and ran a bunch of test programs on FreeBSD/i386 with this. See also https://svnweb.freebsd.org/changeset/base/345283 Reviewers: emaste, jlpeyton, Hahnfeld Reviewed By: jlpeyton Subscribers: krytarowski, guansong, jdoerfert, openmp-commits, llvm-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D60917 llvm-svn: 359716
* [OpenMP] Implement task modifier for reduction clauseJonathan Peyton2019-05-013-57/+343
| | | | | | | | | | | | | | | | | Implemented task modifier in two versions - one without taking into account omp_orig variable (the omp_orig still can be processed by compiler without help of the library, but each reduction object will need separate initializer with global access to omp_orig), another with omp_orig variable included into interface (single initializer can be used for multiple reduction objects of the same type). Second version can be used when the omp_orig is not globally accessible, or to optimize code in case of multiple reduction objects of the same type. Patch by Andrey Churbanov Differential Revision: https://reviews.llvm.org/D60976 llvm-svn: 359710
* [OpenMP] Add OpenMP 5.0 nonmonotonic codeJonathan Peyton2019-04-309-95/+236
| | | | | | | | | | | | This patch adds: * New omp_sched_monotonic flag to omp_sched_t which is handled within the runtime * Parsing of monotonic/nonmonotonic in OMP_SCHEDULE * Tests for the monotonic flag and envirable parsing * Logic to force monotonic when hierarchical scheduling is used Differential Revision: https://reviews.llvm.org/D60979 llvm-svn: 359601
* [OpenMP] Eliminate some compiler warningsJonathan Peyton2019-04-303-4/+10
| | | | | | | | | | | * Remove accidental == for = * Assign values to variables to appease compiler * Surround debug code with KMP_DEBUG * Remove unused local typedefs Differential Revision: https://reviews.llvm.org/D60983 llvm-svn: 359599
* Use correct way to test for MIPS arch after rOMP355687Dimitry Andric2019-04-221-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: I ran into some issues after rOMP355687, where __atomic_fetch_add was being used incorrectly on x86, and this turns out to be caused by the following added conditionals: ``` #if defined(KMP_ARCH_MIPS) ``` The problem is, these macros are always defined, and are either 0 or 1 depending on the architecture. E.g. the correct way to test for MIPS is: ``` #if KMP_ARCH_MIPS ``` Reviewers: petarj, jlpeyton, Hahnfeld, AndreyChurbanov Reviewed By: petarj, AndreyChurbanov Subscribers: AndreyChurbanov, sdardis, arichardson, atanasyan, jfb, jdoerfert, openmp-commits, llvm-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D60938 llvm-svn: 358911
* Fixed memory leak reported in Bugzilla:Andrey Churbanov2019-04-171-2/+9
| | | | | | | | | | https://bugs.llvm.org/show_bug.cgi?id=41494 Freed th_cg_roots structure at exit from uber thread. Differential Revision: https://reviews.llvm.org/D60729 llvm-svn: 358572
* [OpenMP] Exchange code in asm file for inline assemblyJonathan Peyton2019-04-152-206/+69
| | | | | | | | | | This change replaces some of the assembly functions in z_Linux_asm.S for inline asm in kmp.h. This allows better interaction with compiler tools and sanitizers. Differential Revision: https://reviews.llvm.org/D60423 llvm-svn: 358438
* Fixed possible out of bound array access.Andrey Churbanov2019-04-111-2/+2
| | | | | | | | The check of index value moved to before the write to the array. Differential Revision: https://reviews.llvm.org/D60471 llvm-svn: 358181
* [OpenMP] Implement 5.0 memory managementJonathan Peyton2019-04-0813-187/+886
| | | | | | | | | | | | | | | | | | * Replace HBWMALLOC API with more general MEMKIND API, new functions and variables added. * Have libmemkind.so loaded when accessible. * Redirect memspaces to default one except for high bandwidth which is processed separately. * Ignore some allocator traits e.g., sync_hint, access, pinned, while others are processed normally e.g., alignment, pool_size, fallback, fb_data, partition. * Add tests for memory management Patch by Andrey Churbanov Differential Revision: https://reviews.llvm.org/D59783 llvm-svn: 357929
* [OpenMP] Clean up load balancing dynamic modeJonathan Peyton2019-04-087-36/+30
| | | | | | | | | | | | | | | | This patch cleans up the bookkeeping code for the load balancing dynamic mode. When a thread is moved to or from the thread pool, the th_active_in_pool flag and the __kmp_thread_pool_active_nth global counter are both updated. This removes the need for the corrective code in the main wait loop. Another global counter, __kmp_thread_pool_nth, was removed completely, as it was only used for debugging, but was not under KMP_DEBUG. Patch by Terry Wilmarth Differential Revision: https://reviews.llvm.org/D59508 llvm-svn: 357927
* [OpenMP] Fix hang on WindowsJonathan Peyton2019-04-041-21/+46
| | | | | | | | | | | | | | | | | | | | | | | | Debug dump on large machine shows when many OpenMP threads (401 in total) sleep on a barrier, one of the innermost nesting levels sleeps on a child's b_arrived flag whose value is equal to 4 and is equal to checker value. i.e., (1) sleep bit is 0, and (2) done_check() would return true if called. It is unclear how this might happen. It could be Windows Server 2016's error of EnterCriticalSection / LeaveCriticalSection, or error of WaitForSingleObject / SetEvent / ResetEvent, or error in the library which is very difficult to find. As a workaround, change INFINITE wait to timed wait, so that each thread awakens each 5 seconds (the timeout was chosen arbitrary to not disturb other threads much), check flag condition under the lock, and either go to sleep again or stop sleeping as a result of the check. Patch by Andrey Churbanov Differential Revision: https://reviews.llvm.org/D59793 llvm-svn: 357722
* [OpenMP][Stats] Fix stats gathering for distribute and team clauseJonathan Peyton2019-04-036-32/+107
| | | | | | | | | | | The distribute clause needs an explicit push of a timer. The teams clause needs a timer added and also, similarly to parallel, exchanged with the serial timer when encountered so that serial regions are counted properly. Differential Revision: https://reviews.llvm.org/D59801 llvm-svn: 357621
* [OpenMP] Add LLVM license header to fileJonathan Peyton2019-03-251-0/+12
| | | | | | This file was missing the LLVM license header llvm-svn: 356962
* [OpenMP] Add Intel 19.0 to list of compilers in kmp_version.cppJonathan Peyton2019-03-251-3/+3
| | | | llvm-svn: 356961
* Fix gettid warnings on FreeBSDDimitry Andric2019-03-251-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: [Split off from D59451 to get this fix in separately] While building the 8.0 releases on FreeBSD, I encountered the following warnings in openmp quite a few times: ``` In file included from projects/openmp/runtime/src/kmp_settings.cpp:27: projects/openmp/runtime/src/kmp_wrapper_getpid.h:35:2: warning: #warning is a language extension [-Wpedantic] #warning No gettid found, use getpid instead ^ projects/openmp/runtime/src/kmp_wrapper_getpid.h:35:2: warning: No gettid found, use getpid instead [-W#warnings] 2 warnings generated. ``` I added a gettid wrapper that uses FreeBSD's pthread_getthreadid_np(3) function for this. Reviewers: emaste, jlpeyton, krytarowski, mgorny, protze.joachim Reviewed By: jlpeyton Subscribers: jfb, jdoerfert, openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D59735 llvm-svn: 356934
* [OpenMP] Fix pause check with version infoJonathan Peyton2019-03-251-9/+6
| | | | | | | | | | Add 5.0 guard to pause code for now. Patch by Terry Wilmarth Differential Revision: https://reviews.llvm.org/D59428 llvm-svn: 356933
* [OpenMP] Remove deprecated taskqJonathan Peyton2019-03-156-2248/+16
| | | | | | | | | | Remove very old, unused, and deprecated taskq code. Patch by Terry Wilmarth Differential Revision: https://reviews.llvm.org/D58989 llvm-svn: 356288
* [OpenMP][stats] Update stats gathering macrosJonathan Peyton2019-03-082-16/+16
| | | | llvm-svn: 355739
* [mips] Use libatomic instead of GCC intrinsics for 64bitPetar Jovanovic2019-03-081-10/+66
| | | | | | | | | | | | | | | | | The following GCC intrinsics are not available on MIPS32: __sync_fetch_and_add_8 __sync_fetch_and_and_8 __sync_fetch_and_or_8 __sync_val_compare_and_swap_8 Replace these with appropriate libatomic implementation. Patch by Miodrag Dinic. Differential Revision: https://reviews.llvm.org/D45691 llvm-svn: 355687
* [OpenMP][OMPT] Distinguish different barrier kindsJonathan Peyton2019-02-285-16/+48
| | | | | | | | | | | | | This change makes the runtime decide the intended use of each barrier invocation, for the OMPT synchronization tool callbacks. The OpenMP 5.0 specification defines four possible barrier kinds -- implicit, explicit, implementation, and just normal barrier. Patch by Hansang Bae Differential Revision: https://reviews.llvm.org/D58247 llvm-svn: 355140
* [OpenMP 5.0] Deprecate nest-var and associated featuresJonathan Peyton2019-02-287-37/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | Nest-var, OMP_NESTED, omp_set_nested()., and omp_get_nested() have been deprecated in the 5.0 spec. Initial nesting info is now derived from OMP_MAX_ACTIVE_LEVELS, OMP_NUM_THREADS, and OMP_PROC_BIND. This patch deprecates the internal ICV that corresponds to nest-var, and replaces it with the max-active-levels-var ICV to determine nesting. The change still allows for use of OMP_NESTED (according to 5.0 changes), omp_get_nested, and omp_set_nested, which have had deprecation messages added to them. The change allows certain settings of OMP_NUM_THREADS, OMP_PROC_BIND, and OMP_MAX_ACTIVE_LEVELS to turn on nesting, but OMP_NESTED=0 will still force nesting to be off. The runtime now prints informative messages about deprecation of OMP_NESTED, omp_set_nested(), and omp_get_nested(), when those environment variables or routines are used. It also prints deprecated message in output for KMP_SETTINGS and OMP_DISPLAY_ENV for OMP_NESTED. This patch also fixes OMP_DISPLAY_ENV output for OMP_TARGET_OFFLOAD. Patch by Terry Wilmarth Differential Revision: https://reviews.llvm.org/D58408 llvm-svn: 355138
* [OpenMP] Make use of sched_yield optional in runtimeJonathan Peyton2019-02-2819-383/+181
| | | | | | | | | | | | | | | | | | | | | | | | | | This patch cleans up the yielding code and makes it optional. An environment variable, KMP_USE_YIELD, was added. Yielding is still on by default (KMP_USE_YIELD=1), but can be turned off completely (KMP_USE_YIELD=0), or turned on only when oversubscription is detected (KMP_USE_YIELD=2). Note that oversubscription cannot always be detected by the runtime (for example, when the runtime is initialized and the process forks, oversubscription cannot be detected currently over multiple instances of the runtime). Because yielding can be controlled by user now, the library mode settings (from KMP_LIBRARY) for throughput and turnaround have been adjusted by altering blocktime, unless that was also explicitly set. In the original code, there were a number of places where a double yield might have been done under oversubscription. This version checks oversubscription and if that's not going to yield, then it does the spin check. Patch by Terry Wilmarth Differential Revision: https://reviews.llvm.org/D58148 llvm-svn: 355120
* [OpenMP 5.0] Add omp_get_supported_active_levels()Jonathan Peyton2019-02-197-0/+38
| | | | | | | | | | This patch adds the new 5.0 API function omp_get_supported_active_levels(). Patch by Terry Wilmarth Differential Revision: https://reviews.llvm.org/D58211 llvm-svn: 354368
* [OpenMP] Adding GOMP compatible cancellationJonathan Peyton2019-02-195-113/+246
| | | | | | | | | | | Remove fatal error messages from the cancellation API for GOMP Add __kmp_barrier_gomp_cancel() to implement cancellation of parallel regions. This new function uses the linear barrier algorithm with a cancellable nonsleepable wait loop. Differential Revision: https://reviews.llvm.org/D57969 llvm-svn: 354367
* [OpenMP] Fix thread_limits to work properly for teams constructJonathan Peyton2019-02-114-26/+160
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The thread-limit-var and omp_get_thread_limit API was not perfectly handled for teams construct. Now, when modified by thread_limit clause, omp_get_thread_limit reports the correct value. In addition, the value is restored when leaving the teams construct to what it was in the encountering context. This is done partly by creating the notion of a Contention Group root (CG root) that keeps track of the thread at the root of each separate CG, the thread-limit-var associated with the CG, and associated counter of active threads within the contention group. thread-limits are passed from master to worker threads via an entry in the ICV data structure. When a "contention group switch" occurs, a new CG root record is made and passed from master to worker. A thread could potentially have several CG root records if it encounters multiple nested teams constructs (but at the moment the spec doesn't allow for nested teams, so the most one could have currently is 2). The master of the teams masters gets the thread-limit clause value stored to its local ICV structure, and the other teams masters copy it from the master. The thread-limit is set from that ICV copy and restored to the ICV copy when entering and leaving the teams construct. This change also fixes a bug when the top-level teams construct team gets reused, and OMP_DYNAMIC was true, which can cause the expected size of this team to be smaller than what was actually allocated. The fix updates the size of the team after its threads were reserved. Patch by Terry Wilmarth Differential Revision: https://reviews.llvm.org/D56804 llvm-svn: 353747
* Guard a feature that unsupported by old GCCTaewook Oh2019-02-081-1/+9
| | | | | | | | | | | | | | | | Summary: As @david2050 commented, changes introduced by https://reviews.llvm.org/D56397 break builds for older compilers which don't support `__has(_cpp)_attribute`. This is a fix for the break. Reviewers: protze.joachim, jlpeyton, AndreyChurbanov, Hahnfeld, david2050 Subscribers: openmp-commits, david2050 Tags: #openmp Differential Revision: https://reviews.llvm.org/D57851 llvm-svn: 353538
* [OMPT] Make sure that OMPT is enabled when accessing internals of the runtimeJoachim Protze2019-02-044-0/+17
| | | | | | | | | | | | | | | | | The three switch fallthrough generate a warning with -Wimplicit-fallthrough. Two are documented as fallthrough, one is not, but I think the intention is to also fallthrough in kmp_tasking.cpp. Not sure whether kmp.h is the best place to define the macro. Reviewers: jlpeyton, AndreyChurbanov, Hahnfeld Reviewed By: jlpeyton Tags: #openmp Differential Revision: https://reviews.llvm.org/D56397 llvm-svn: 353052
* [OMPT] Make sure that OMPT is enabled when accessing internals of the runtimeJoachim Protze2019-01-301-4/+15
| | | | | | | | | | | | | | | | | | | | Redo after revert by hans. The wrong include in one test is fixed. Make sure that OMPT is enabled in runtime entry points that access internals of the runtime. Else, return an appropiate value indicating an error or that the data is not available. Patch provided by @sconvent Reviewers: jlpeyton, omalyshe, hbae, Hahnfeld, joachim.protze Reviewed By: joachim.protze Tags: #openmp, #ompt Differential Revision: https://reviews.llvm.org/D47717 llvm-svn: 352611
* NFC: fixed formatting to be consistent across the fileAndrey Churbanov2019-01-211-1/+2
| | | | llvm-svn: 351748
* Fixed https://reviews.llvm.org/D55078 broken Fortran fixed form.Andrey Churbanov2019-01-211-4/+6
| | | | | | | | Long lines split in order to obey Fortran fixed form compilation. Differential Revision: https://reviews.llvm.org/D57017 llvm-svn: 351745
* Update more file headers across all of the LLVM projects in the monorepoChandler Carruth2019-01-19108-432/+324
| | | | | | | | | | | | | | | | | | to reflect the new license. These used slightly different spellings that defeated my regular expressions. We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach. Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository. llvm-svn: 351648
* Revert r351311 "[OMPT] Make sure that OMPT is enabled when accessing ↵Hans Wennborg2019-01-171-15/+4
| | | | | | | | | | | | | | | | | | | | | | | | internals of the runtime" and also the follow-up r351315. The new test is failing on the buildbots. > Make sure that OMPT is enabled in runtime entry points that access internals > of the runtime. Else, return an appropiate value indicating an error or that > the data is not available. > > Patch provided by @sconvent > > Reviewers: jlpeyton, omalyshe, hbae, Hahnfeld, joachim.protze > > Reviewed By: joachim.protze > > Tags: #openmp, #ompt > > Differential Revision: https://reviews.llvm.org/D47717 llvm-svn: 351431
* [OpenMP] Add omp_pause_resource* APIJonathan Peyton2019-01-1618-10/+398
| | | | | | | | | | | | Add omp_pause_resource and omp_pause_resource_all API and enum, plus stub for internal implementation. Implemented callable helper function to do local pause, and added basic functionality for hard and soft pause. Patch by Terry Wilmarth Differential Revision: https://reviews.llvm.org/D55078 llvm-svn: 351372
* [OpenMP] Remove compiler warning about unused valueJoachim Protze2019-01-161-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | The compiler warns about an unused variable/statement: runtime/src/kmp_affinity.cpp:4958:18: warning: statement has no effect [-Wunused-value] KA_TRACE(1000, ; { ^ runtime/src/kmp_debug.h:84:24: note: in definition of macro 'KA_TRACE' __kmp_debug_printf x; \ ^ Instead of the unused reference to this function, this patch now calls the function with an empty string. The call to this function should have no effect. Patch provided by joachim.protze Reviewers: jlpeyton, hbae, AndreyChurbanov Reviewed By: AndreyChurbanov Tags: #openmp, #ompt Differential Revision: https://reviews.llvm.org/D56775 llvm-svn: 351323
* Fix compiler error in r351311Joachim Protze2019-01-161-1/+1
| | | | llvm-svn: 351315
* [OMPT] Make sure that OMPT is enabled when accessing internals of the runtimeJoachim Protze2019-01-161-4/+15
| | | | | | | | | | | | | | | | | | Make sure that OMPT is enabled in runtime entry points that access internals of the runtime. Else, return an appropiate value indicating an error or that the data is not available. Patch provided by @sconvent Reviewers: jlpeyton, omalyshe, hbae, Hahnfeld, joachim.protze Reviewed By: joachim.protze Tags: #openmp, #ompt Differential Revision: https://reviews.llvm.org/D47717 llvm-svn: 351311
* [OpenMP] Fix for nested proc_bind affinity bugJonathan Peyton2019-01-152-13/+11
| | | | | | | | | | | | | | Using proc_bind clause on a nested #pragma omp parallel region with KMP_AFFINITY set causes an assertion error. This assertion occurs because the place-partition-var is not properly initialized in the nested master threads. Trying to get an intuitive result with KMP_AFFINITY + proc_bind is difficult because of how the KMP_AFFINITY gtid-to-place mapping occurs. This patch creates an initial place list no matter what affinity mechanism is used. For KMP_AFFINITY, the place-partition-var is initialized to all the places. Differential Revision: https://reviews.llvm.org/D55795 llvm-svn: 351227
* [OpenMP] Add lock function definitions to fix Bug 40042Jonathan Peyton2019-01-151-0/+41
| | | | | | | | | | | | | This change fixes the sanity issue reported in Bug 40042. Lock function definitions for the three lock kinds were added to disambiguate calls to the lock functions done directly and indirectly. Bugzilla: https://bugs.llvm.org/show_bug.cgi?id=40042 Patch by Hansang Bae Differential Revision: https://reviews.llvm.org/D56103 llvm-svn: 351224
* [OpenMP] Fix performance regression in SPEC kdtree testJonathan Peyton2019-01-151-13/+9
| | | | | | | | | | Make __ompt_implicit_task_end a static function and remove the inline part. Remove pId variable that is unused. This fixes small regression in SPEC kdtree benchmark. Also reformat some of __ompt_implicit_task_end. Differential Revision: https://reviews.llvm.org/D55788 llvm-svn: 351221
* [OMPT] Second chunk of final OMPT 5.0 interface updatesJoachim Protze2019-01-1513-776/+1128
| | | | | | | | | | | | | | | | | | | | | The omp-tools.h file is generated from the OpenMP spec to ensure that the interface is implemented as specified. The other changes are necessary to update the interface implementation to the final version as published in 5.0. The omp-tools.h header was previously called ompt.h, currently a copy under this name is installed for legacy tools. Patch partially perpared by @sconvent Reviewers: AndreyChurbanov, hbae, Hahnfeld Reviewed By: hbae Tags: #openmp, #ompt Differential Revision: https://reviews.llvm.org/D55579 llvm-svn: 351197
* [OpenMP] Fix LIBOMP_USE_DEBUGGER=ON build (PR38612)Roman Lebedev2019-01-133-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Two things: 1. Those two variables had the wrong sigdness, which was resulting in "sign mismatch in comparison" warning. 2. The whole `kmp_debugger.cpp` wasn't being built, or rather, it was being built as-if `USE_DEBUGGER` was off, thus, nothing provided the definition of `__kmp_omp_debug_struct_info`, `__kmp_debugging`. Makes sense, because `USE_DEBUGGER` is set in `kmp_config.h`, which is not included explicitly. It is included by `kmp.h`, but that one is only included inside of the `#if USE_DEBUGGER` block.. I *think* this is the only source file with this issue, everything else seem to `#include` either `kmp.h` or `kmp_config.h`. The alternative solution would be to add `add_compile_options(-include kmp_config.h)` in CMake. I did verify that `__kmp_omp_debug_struct_info` becomes available with this patch. Fixes [[ https://bugs.llvm.org/show_bug.cgi?id=38612 | PR38612 ]]. Reviewers: AndreyChurbanov, jlpeyton, Hahnfeld Reviewed By: jlpeyton Subscribers: guansong, jfb, openmp-commits Tags: #openmp Differential Revision: https://reviews.llvm.org/D55783 llvm-svn: 351019
* Doc: fixed description of a parameter of the __kmpc_taskloopAndrey Churbanov2019-01-091-1/+1
| | | | | | | | Patch by sergi.mateo.bellido@gmail.com Differential Revision: https://reviews.llvm.org/D56432 llvm-svn: 350713
* [OpenMP] Add omp_get_device_num() and update several other device API functionsJonathan Peyton2019-01-0311-48/+112
| | | | | | | | | | | | | | | | | | | | Add omp_get_device_num() function for 5.0 which returns the number of the device the current thread is running on. Currently, we are leaving it to the compiler to handle this properly if it is called inside target. Also, did some cleanup and updating of duplicate device API functions (in both libomp and libomptarget) to make them into weak functions that check for the symbol from libomptarget, and will call the version in libomptarget if it is present. If any additional device API functions are implemented also in libomptarget in the future, we should add the dlsym calls to the host functions. Also, if the omp_target_* functions are to be implemented for the host (this has been requested), they should attempt to call the libomptarget versions as well. Patch by Terry Wilmarth Differential Revision: https://reviews.llvm.org/D55578 llvm-svn: 350352
* [OMPT] First chunk of final OMPT 5.0 interface updatesJoachim Protze2018-12-1815-323/+333
| | | | | | | | | | | | | This patch updates the implementation of the ompt_frame_t, ompt_wait_id_t and ompt_state_t. The final version of the OpenMP 5.0 spec added the "t" for these types. Furthermore the structure for ompt_frame_t changed and allows to specify that the reenter frame belongs to the runtime. Patch partially prepared by Simon Convent Reviewers: hbae llvm-svn: 349458
* [OpenMP] Fixes for LIBOMP_OMP_VERSION=45/40Roman Lebedev2018-12-153-9/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: I have discovered this because i wanted to experiment with building static libomp (with openmp-4.0 support only) for debugging purposes. There are three kinds of problems here: 1. `__kmp_compare_and_store_acq()` simply does not exist. It was added in D47903 by @jlpeyton. I'm guessing `__kmp_atomic_compare_store_acq()` was meant. 2. In `__kmp_is_ticket_lock_initialized()`, `lck->lk.initialized` is `std::atomic<bool>`, while `lck` is `kmp_ticket_lock_t *`. Naturally, they can't be equality-compared. Either, it should return the value read from `lck->lk.initialized`, or do what `__kmp_is_queuing_lock_initialized()` does, compare the passed pointer with the field in the struct pointed by the pointer. I think the latter is correct-er choice here. 3. Tests were not versioned. They assume that `LIBOMP_OMP_VERSION` is at the latest version. This does not touch LIBOMP_OMP_VERSION=30. That is still broken. Reviewers: jlpeyton, Hahnfeld, AndreyChurbanov Reviewed By: AndreyChurbanov Subscribers: guansong, jfb, openmp-commits, jlpeyton Tags: #openmp Differential Revision: https://reviews.llvm.org/D55496 llvm-svn: 349260
OpenPOWER on IntegriCloud