summaryrefslogtreecommitdiffstats
path: root/openmp
Commit message (Collapse)AuthorAgeFilesLines
...
* [libomptarget] Move header files and CMake library definitionJonas Hahnfeld2017-12-065-17/+32
| | | | | | | | | | | | | | Future patches will add (private) header files in src/ that should not be visible to plugins, so move the "public" ones to a new include/ directory. This is still internal in a sense that the contained files won't be installed for the user. Similarly, the target agnostic offloading library should be built directly in src/. The parent directory is responsible for finding dependencies and including all subdirectories. Differential Revision: https://reviews.llvm.org/D40797 llvm-svn: 319968
* [OpenMP] Add entry for Intel Compiler 18Jonathan Peyton2017-12-061-0/+2
| | | | | | | | Patch by Simon Convent Differential Revision: https://reviews.llvm.org/D40386 llvm-svn: 319961
* Eliminate double printing of verbose affinity settingsJonathan Peyton2017-12-061-1/+3
| | | | | | | | | Redundant extra verbose output of binding to full mask in case affinity=balanced or OMP_PLACES=<any> or OMP_PROC_BIND=<any> Differential Revision: https://reviews.llvm.org/D40624 llvm-svn: 319960
* Trivial enum fixJonathan Peyton2017-12-061-4/+4
| | | | | | | | | | | | This change is a trivial fix for enums that removes specification of "last" or "upper" values, or other boundary values. This simplifies the code in places, and results in never needing to update the "upper" values again. Patch by Terry Wilmarth Differential Revision: https://reviews.llvm.org/D40804 llvm-svn: 319957
* Fix alignment in teams-reduction.c testJonas Hahnfeld2017-12-051-1/+6
| | | | | | | | | | The runtime will use the global kmp_critical_name as a lock and tries to atomically store a pointer in there. This will fail if the global is only aligned by 4 bytes, the size of one int32_t element. Use a union to ensure the global is aligned to the size of a pointer on the current platform. llvm-svn: 319811
* Fix PR30890: Reduction across teams hangsJonas Hahnfeld2017-12-052-23/+133
| | | | | | | | | | __kmpc_reduce_nowait() correctly swapped the teams for reductions in a teams construct. Apply the same logic to __kmpc_reduce() and __kmpc_reduce_end(). Differential Revision: https://reviews.llvm.org/D40753 llvm-svn: 319788
* [CMake] Detect information about test compilerJonas Hahnfeld2017-11-308-28/+109
| | | | | | | | | | | | Perform a nested CMake invocation to avoid writing our own parser for compiler versions when we are not testing the in-tree compiler. Use the extracted information to mark a test as unsupported that hangs with Clang prior to version 4.0.1 and restrict tests for libomptarget to Clang version 6.0.0 and later. Differential Revision: https://reviews.llvm.org/D40083 llvm-svn: 319448
* Extension of HWLOC topology discovery with NUMA nodes and tilesAndrey Churbanov2017-11-305-179/+385
| | | | | | | | Patch by Olga Malysheva Differential Revision: https://reviews.llvm.org/D40309 llvm-svn: 319422
* Make kmp_r_sched_t into a unionJonathan Peyton2017-11-292-30/+24
| | | | | | | | | | | This change makes kmp_r_sched_t type into a union for simpler comparisons and assignments Patch by Terry Wilmarth Differential Revision: https://reviews.llvm.org/D40374 llvm-svn: 319379
* Fix aligned memory allocation in the stub libraryJonathan Peyton2017-11-291-9/+34
| | | | | | | | | | | | | | kmp_aligned_malloc() always returned NULL on Windows (stub library only) that may cause Fortran application crash. With this change all memory allocation functions were fixed to use aligned{m,re,rec}alloc() to allocate/reallocate memory. To deallocate that memory _aligned_free() is used in kmp_free(). Patch by Olga Malysheva Differential Revision: https://reviews.llvm.org/D40296 llvm-svn: 319375
* Warning is emitted when tiles are requested but cannot be usedJonathan Peyton2017-11-292-1/+15
| | | | | | | | | | | | | | Added two warnings: 1) Before building the topology map check if tiles are requested but the topo method is not hwloc; 2) After building the topology map check if tiles are requested but not detected by the library. Patch by Olga Malysheva Differential Revision: https://reviews.llvm.org/D40340 llvm-svn: 319374
* Fix types of Fortran array elementsJonathan Peyton2017-11-296-12/+12
| | | | | | | | | | | | Fortran array elements made default integer in OMP_GET_PLACE_PROC_IDS and OMP_GET_PARTITION_PLACE_NUMS subroutines, otherwise call to them produces incorrect result. Patch by Olga Malysheva Differential Revision: https://reviews.llvm.org/D40356 llvm-svn: 319372
* [CMake] Refactor testing infrastructureJonas Hahnfeld2017-11-2911-198/+172
| | | | | | | | | | | | | | | The code for the two OpenMP runtime libraries was very similar. Move to common CMake file that is included and provides a simple interface for adding testsuites. Also add a common check-openmp target that runs all testsuites that have been registered. Note that this renames all test options to the common OPENMP namespace, for example OPENMP_TEST_C_COMPILER instead of LIBOMP_TEST_COMPILER and so on. Differential Revision: https://reviews.llvm.org/D40082 llvm-svn: 319343
* [CMake] Refactor common settings and flagsJonas Hahnfeld2017-11-2912-103/+95
| | | | | | | | | | | | These are needed by both libraries, so we can do that in a common namespace and unify configuration parameters. Also make sure that the user isn't requesting libomptarget if the library cannot be built on the system. Issue an error in that case. Differential Revision: https://reviews.llvm.org/D40081 llvm-svn: 319342
* [CMake] Disallow direct configurationJonas Hahnfeld2017-11-2910-41/+28
| | | | | | | | | | As a first step, this allows us to generalize the detection of standalone builds and make it fully compatible when building in llvm/runtimes/ which automatically sets OPENMP_STANDLONE_BUILD. Differential Revision: https://reviews.llvm.org/D40080 llvm-svn: 319341
* [openmp] Set up .arcconfig to point to new Diffusion OMP repositoryBen Hamilton2017-11-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: We want to automatically copy the appropriate mailing list for review requests to the openmp repository. For context, see the proposal and discussion here: http://lists.llvm.org/pipermail/cfe-dev/2017-November/056032.html Similar to D40179, I set up a new Diffusion repository with callsign "OMP" for OpenMP: https://reviews.llvm.org/source/openmp/ This explicitly updates openmp's .arcconfig to point to the new OMP repository in Diffusion, which will let us use Herald rule H272 to automatically subscribe openmp-commits to review requests. Reviewers: hans, grokos, Hahnfeld Reviewed By: grokos Subscribers: sammccall, klimek, openmp-commits Differential Revision: https://reviews.llvm.org/D40499 llvm-svn: 319254
* doxygen: disable the html timestamp: this is breaking the reproducible build ↵Sylvestre Ledru2017-11-252-2/+2
| | | | | | of openmp llvm-svn: 318978
* Fix for OMP doacross implementation on PowerJonas Hahnfeld2017-11-222-2/+9
| | | | | | | | | | Power has a weak consistency model so we need memory barriers to make writes (both from runtime and from user code) available for all threads. Differential Revision: https://reviews.llvm.org/D40175 llvm-svn: 318848
* [CMake] Re-enable libomptarget and restrict tests to Clang 6.0.0Jonas Hahnfeld2017-11-222-4/+24
| | | | | | | | | | We have just fixed the codegen of omp_is_initial_device() to reliably work when offloading to the same device, see commit r316001. This fixes the failing tests that were the reason why we disabled the library for 5.0. Differential Revision: https://reviews.llvm.org/D39052 llvm-svn: 318847
* [Clang][OpenMP] New clang/libomptarget map interface: new function ↵George Rokos2017-11-212-57/+57
| | | | | | | | | | | signatures, libomptarget-side This is the libomptarget-side patch which changes the __tgt_* API function signatures in preparation for the new map interface. Changes are: Device IDs 32bits --> 64bits, Flags 32bits --> 64bits Differential revision: https://reviews.llvm.org/D40313 llvm-svn: 318790
* Fixed OMP doacross implementation on 32-bit platforms.Andrey Churbanov2017-11-201-8/+15
| | | | | | Differential Revision: https://reviews.llvm.org/D40171 llvm-svn: 318658
* [OMPT] Fix inaccuracies in worksharing testsJonas Hahnfeld2017-11-172-8/+7
| | | | | | | | | | | | | | | | | These tests were failing rarely on my MacBook when there was some activity in the background. Read: one of a thousand executions? * sections.c missed the sorting based on thread ids. This worked as long as the master thread finished its section before the worker thread started the second one but failed if the master thread was put to sleep by the OS. * The checks in single.c assumed that the master thread executes the single region which works most of the time because it is usually faster than the newly spawned worker thread. Differential Revision: https://reviews.llvm.org/D39853 llvm-svn: 318527
* Exclude untied tasks from checking of task scheduling constraint (TSC).Andrey Churbanov2017-11-163-101/+164
| | | | | | | | This can improve performance of tests with untied tasks. Differential Revision: https://reviews.llvm.org/D39613 llvm-svn: 318388
* [OpenMP] Remove the unused testsuite/ directoryJonathan Peyton2017-11-13161-15270/+0
| | | | | | | | | | The testsuite directory is not used or updated and confuses new users to the OpenMP project. These tests were rewritten using the lit format and put under the runtime/test directory. This patch removes the entire testsuite/ directory. Differential Revision: https://reviews.llvm.org/D39767 llvm-svn: 318056
* [OMPT] Provide initialization for Mac OS XJonas Hahnfeld2017-11-114-49/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Traditionally, the library had a weak symbol for ompt_start_tool() that served as fallback and disabled OMPT if called. Tools could provide their own version and replace the default implementation to register callbacks and lookup functions. This mechanism has worked reasonably well on Linux systems where this interface was initially developed. On Darwin / Mac OS X the situation is a bit more complicated and the weak symbol doesn't work out-of-the-box. In my tests, the library with the tool needed to link against the OpenMP runtime to make the process work. This would effectively mean that a tool needed to choose a runtime library whereas one design goal of the interface was to allow tools that are agnostic of the runtime. The solution is to use dlsym() with the argument RTLD_DEFAULT so that static implementations of ompt_start_tool() are found in the main executable. This works because the linker on Mac OS X includes all symbols of an executable in the global symbol table by default. To use the same code path on Linux, the application would need to be built with -Wl,--export-dynamic. To avoid this restriction, we continue to use weak symbols on Linux systems as before. Finally this patch extends the existing test to cover all possible ways of initializing the tool as described by the standard. It also fixes ompt_finalize() to not call omp_get_thread_num() when the library is shut down which resulted in hangs on Darwin. The changes have been tested on Linux to make sure that it passes the current tests as well as the newly extended one. Differential Revision: https://reviews.llvm.org/D39801 llvm-svn: 317980
* [libomptarget] Build all libraries in libomptarget/Jonas Hahnfeld2017-11-111-0/+3
| | | | | | | | | In standalone build, plugins where previously built in their subdirectory in plugins/ and tests couldn't find them. Differential Revision: https://reviews.llvm.org/D39920 llvm-svn: 317979
* [OMPT] Fix assertion for OpenMP code generated with outdated compilersJoachim Protze2017-11-103-7/+13
| | | | | | | | | | | | For up-to-date compilers, this assertion is reasonable, but it breaks compatibility with the typical compiler installed on most systems. This patch changes the default value to what we had when there was no compiler support. A warning about the outdated compiler is printed during runtime, when this point is reached. Differential Revision: https://reviews.llvm.org/D39890 llvm-svn: 317928
* [OMPT] Purge OMPT_BLAME and OMPT_TRACEJonas Hahnfeld2017-11-102-9/+5
| | | | | | This was replace by OMPT_OPTIONAL. llvm-svn: 317890
* Add const to some variables to avoid const_castsJonas Hahnfeld2017-11-092-7/+6
| | | | | | | | | In these places the const attribute seems correct and doesn't need any other change, so let's do it. Differential Revision: https://reviews.llvm.org/D39756 llvm-svn: 317798
* Remove const from variables with dynamic memoryJonas Hahnfeld2017-11-0913-83/+70
| | | | | | | | | | | | | | | | | | | Allocated memory is typically not 'const' if it needs to be freed. This patch removes around 50 wrong const attributes, modifies the corresponding functions and finally gets rid of some const_casts. These have especially been strange for __kmp_str_fname_free() that added a 'const' to call __kmp_str_free() which removed it again. Two minor cleanups that I performed in this process: * __kmp_tool_libraries now lives in kmp_settings.cpp as it is used nowhere else. * __kmp_msg_empty was removed as it was never used and Clang now complained that it was assigned a string literal that is 'const char *'. Differential Revision: https://reviews.llvm.org/D39755 llvm-svn: 317797
* [OMPT] Fix test cancel_parallel.cJonas Hahnfeld2017-11-091-16/+14
| | | | | | | | | | | | | | | | | | | | | If a parallel region is cancelled, execution resumes at the end of the structured block. That is why this test cannot use the "normal" macros that print right after inserting the label. Instead it previously printed the addresses before the pragma and swapped the checks compared to the other tests. However, this does not work because FileChecks '*' is greedy so that RETURN_ADDRESS always matched the second address. This makes the test fail when an "overflow" occurrs and the first address matches the value of codeptr_ra. I discovered this on my MacBook but I'm unable to reproduce the failure with the current version. Nevertheless we should fix this problem to avoid that this test fails later after an unrelated change. Differential Revision: https://reviews.llvm.org/D39708 llvm-svn: 317787
* [OMPT] Add support for testing return addresses on POWERJonas Hahnfeld2017-11-091-16/+72
| | | | | | | | | | | | | | | | | | | Return addresses are determined based on the address of a label that is inserted directly after a pragma / API call. In some cases the tests can assume a known number of instructions between the addresses. However, the instructions and their encoded lengths depend on the target that the test is compiled on. Firstly, this patch refactors the macro print_current_address() to allow such target dependent modifications and adds information for the observed instructions on POWER. Secondly, it adapts the related macro print_fuzzy_address() to reuse much of "hacky" code and fixes the used formatting strings in the printf() call. Finally, it also adds documentation about how these macros are intended to work. Differential Revision: https://reviews.llvm.org/D39699 llvm-svn: 317786
* Cleanup version symbol macros and attributes/declspecsJonathan Peyton2017-11-0711-523/+375
| | | | | | | | | | | | 1) Get rid of xaliasify, xexpand and xversionify for KMP_EXPAND_NAME and KMP_VERSION_SYMBOL. KMP_VERSION_SYMBOL is a combination of xaliasify and xversionify. 2) Put all attribute and __declspec definitions in kmp_os.h Differential Revision: https://reviews.llvm.org/D39516 llvm-svn: 317636
* [OMPT] Fix null pointer in parallel/no_thread_num_clause.cJonas Hahnfeld2017-11-061-1/+1
| | | | | | | Looks like the implementation of printf on Darwin uses "0x0" instead of "(nil)" like glibc does. llvm-svn: 317515
* [OMPT] Fix callback.h for tests for changes in TR6Jonas Hahnfeld2017-11-061-4/+4
| | | | | | This was also lost in the last commit. llvm-svn: 317484
* [OMPT] Improve cast that was lost on commit, NFC.Jonas Hahnfeld2017-11-061-2/+2
| | | | llvm-svn: 317480
* Updating implementation of OMPT as specified in OpenMP 5.0 Preview 2 (TR6)Joachim Protze2017-11-057-278/+186
| | | | | | | | | | | The TR6 document is expected to be publically released around November 15. This patch does not implement OMPT for libomptarget. Patch by Simon Convent and Joachim Protze Differential Revision: https://reviews.llvm.org/D39182 llvm-svn: 317436
* Rename fields of ompt_frame_tJoachim Protze2017-11-059-106/+98
| | | | | | | | | | This is part of the renaming of data types from OpenMP TR4 to TR6 Patch by Simon Convent Differential Revision: https://reviews.llvm.org/D39326 llvm-svn: 317435
* Revert "Rename fields of ompt_frame_t"Jonas Hahnfeld2017-11-0310-101/+106
| | | | | | This reverts commit r317338 which discarded some recent commits. llvm-svn: 317347
* Revert "Updating implementation of OMPT as specified in OpenMP 5.0 Preview 2 ↵Jonas Hahnfeld2017-11-0325-251/+396
| | | | | | | | (TR6)" This reverts commit r317339 which discarded some recent commits. llvm-svn: 317346
* Updating implementation of OMPT as specified in OpenMP 5.0 Preview 2 (TR6)Joachim Protze2017-11-0325-396/+251
| | | | | | | | | | | The TR6 document is expected to be publically released around November 15. This patch does not implement OMPT for libomptarget. Patch by Simon Convent and Joachim Protze Differential Revision: https://reviews.llvm.org/D39182 llvm-svn: 317339
* Rename fields of ompt_frame_tJoachim Protze2017-11-0310-106/+101
| | | | | | | | | | This is part of the renaming of data types from OpenMP TR4 to TR6 Patch by Simon Convent Differential Revision: https://reviews.llvm.org/D39326 llvm-svn: 317338
* [libomptarget] Remove stale omp handleJonas Hahnfeld2017-11-021-3/+0
| | | | | | | | | This was never used in the upstream compiler and was responsible for some problems with reductions in the clang-ykt fork. Differential Revision: https://reviews.llvm.org/D39553 llvm-svn: 317214
* [OpenMP] Fix race condition in omp_init_lockJonathan Peyton2017-11-012-3/+46
| | | | | | | | | | | | | | | | | | | | | This is a partial fix for bug 34050. This prevents callers of omp_set_lock (which does not hold __kmp_global_lock) from ever seeing an uninitialized version of __kmp_i_lock_table.table. It does not solve a use-after-free race condition if omp_set_lock obtains a pointer to __kmp_i_lock_table.table before it is updated and then attempts to dereference afterwards. That race is far less likely and can be handled in a separate patch. The unit test usually segfaults on the current trunk revision. It passes with the patch. Patch by Adam Azarchs Differential Revision: https://reviews.llvm.org/D39439 llvm-svn: 317115
* Update implementation of OMPT to the specification OpenMP 5.0 Preview 1 (TR4).Joachim Protze2017-11-0191-1829/+7244
| | | | | | | | | | | | | | The code is tested to work with latest clang, GNU and Intel compiler. The implementation is optimized for low overhead when no tool is attached shifting the cost to execution with tool attached. This patch does not implement OMPT for libomptarget. Patch by Simon Convent and Joachim Protze Differential Revision: https://reviews.llvm.org/D38185 llvm-svn: 317085
* Test commit: sort names in CREDITS.txtJoachim Protze2017-10-301-4/+4
| | | | llvm-svn: 316922
* Fix fatal error message displayingJonathan Peyton2017-10-251-6/+15
| | | | | | | | | | | | | Replacing call to __kmp_msg(kmp_ms_fatal,...) with __kmp_fatal(...) caused an issue when incomplete message is displayed in case an error message is followed by another message (e.g. by a hint messa)ge. This is because __kmp_fatal() passes incomplete list of arguments to __kmp_msg(). Patch by Olga Malysheva Differential Revision: https://reviews.llvm.org/D39248 llvm-svn: 316623
* Disable threadprivate data cleanup if runtime is terminatingJonathan Peyton2017-10-241-0/+7
| | | | | | | | | | | The problem is due to the runtime's threadprivate cleanup code which tries to access data that was already destroyed by one of the root threads. __kmp_init_gtid is used as a checker here since it is set to false before actual resource cleanup is done in __kmp_cleanup(). Patch by Hansang Bae llvm-svn: 316452
* Restrict OMPT to OpenMP version 5.0 and remove old header filesJonathan Peyton2017-10-204-1519/+4
| | | | | | | | Patch by Simon Convent Differential Revision: https://reviews.llvm.org/D38876 llvm-svn: 316234
* Add license envirable for testing Intel compilersJonathan Peyton2017-10-201-0/+4
| | | | | | | | Patch by Simon Convent Differential Revision: https://reviews.llvm.org/D38881 llvm-svn: 316232
OpenPOWER on IntegriCloud