summaryrefslogtreecommitdiffstats
path: root/openmp
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* [libomptarget] Fix compilation with libc++Jonas Hahnfeld2017-01-271-1/+1
| | | | | | | | iterator is only guaranteed to be default-constructible, without any argument. Differential Revision: https://reviews.llvm.org/D29171 llvm-svn: 293277
* [OpenMP] Initial implementation of OpenMP offloading library - libomptarget.George Rokos2017-01-2515-0/+3357
| | | | | | | | This is the patch upstreaming the device-agnostic part of libomptarget. Differential Revision: https://reviews.llvm.org/D14031 llvm-svn: 293094
* 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
* Fix small memory leak regarding __kmp_nested_proc_bindJonathan Peyton2017-01-181-0/+4
| | | | | | | There is no corresponding free() for this expandable array. The logic is added in __kmp_cleanup() next to the freeing of __kmp_nested_nth. llvm-svn: 292348
* kmp_affinity: Fix check if specific bit is setJonas Hahnfeld2017-01-121-1/+1
| | | | | | | | | | | | | | | | Clang 4.0 trunk warns: warning: logical not is only applied to the left hand side of this bitwise operator [-Wlogical-not-parentheses] This points to a potential bug if the code really wants to check if the single bit is not set: If for example (buf.edx >> 9) = 2 (has any bit set except the least significant one), 'logical not' will return 0 which stays 0 after the 'bitwise and'. To do this correctly we first need to evaluate the 'bitwise and'. In that case it returns 2 & 1 = 0 which after the 'logical not' evaluates to 1. Differential Revision: https://reviews.llvm.org/D28599 llvm-svn: 291764
* [CMake] Make openmp build under runtimes/Jonas Hahnfeld2017-01-041-1/+2
| | | | | | | | runtimes/CMakeLists.txt in LLVM passes OPENMP_STANDALONE_BUILD. Differential Revision: https://reviews.llvm.org/D28280 llvm-svn: 290978
* Fix for the __kmpc_global_num_threads function to return the value of the ↵Andrey Churbanov2016-12-211-2/+2
| | | | | | | | | | __kmp_all_nth global var. Patch by Yonghong Yan. Differential Revision: https://reviews.llvm.org/D27975 llvm-svn: 290272
* Reverting last change.Oren Ben Simhon2016-12-211-1/+1
| | | | llvm-svn: 290245
* [X86] Vectorcall Calling Convention - Adding CodeGen Complete SupportOren Ben Simhon2016-12-211-1/+1
| | | | | | Fixing build issues. llvm-svn: 290242
* Follow up to r289732: Update comments in source files to reference .cpp filesJonathan Peyton2016-12-1433-47/+48
| | | | | | Patch by Hansang Bae llvm-svn: 289739
* Change source files from .c to .cppJonathan Peyton2016-12-1434-50/+46
| | | | | | | | Patch by Hansang Bae Differential Revision: https://reviews.llvm.org/D26688 llvm-svn: 289732
* Cleanup: debug print fixed and moved inside critical section.Andrey Churbanov2016-12-141-5/+5
| | | | | | | | Patch by Victor Campos. Differential Revision: https://reviews.llvm.org/D27647 llvm-svn: 289640
* Support of mips & mips64 for openmprtlSylvestre Ledru2016-12-0818-19/+101
| | | | | | | | | | | | | | Summary: Implemented by Dejan Latinovic See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=790735 for more more information Reviewers: AndreyChurbanov, jlpeyton Subscribers: openmp-commits, mgorny Differential Revision: https://reviews.llvm.org/D26576 llvm-svn: 289032
* fixed type in Windows-specific codeAndrey Churbanov2016-12-011-1/+1
| | | | llvm-svn: 288368
* Fixed typo in kmp_process_deps trace outputJonathan Peyton2016-11-281-1/+1
| | | | | | | | Patch by Victor Campos Differential Revision: https://reviews.llvm.org/D27172 llvm-svn: 288056
* Cleanup: memory leaks on warnings printing fixed; some memory freeing ↵Andrey Churbanov2016-11-287-92/+149
| | | | | | | | | | cleaned; poor indents and one typo fixed. Patch by Victor Campos. Differential Revision: https://reviews.llvm.org/D26786 llvm-svn: 288054
* Set task->td_dephash to NULL after freeJonathan Peyton2016-11-211-0/+1
| | | | llvm-svn: 287552
* Fix for D25504 - segfault because of double free()-ing in shutdown code.Jonathan Peyton2016-11-211-1/+2
| | | | | | | | | | Paul Osmialowski pointed out a double free bug in shutdown code. This patch Moves the freeing of the implicit task to above the freeing of all fast memory to prevent the double-free issue. Differential Revision: https://reviews.llvm.org/D26860 llvm-svn: 287551
* Update stats-gathering codeJonathan Peyton2016-11-146-117/+102
| | | | | | | | | | | | | Have developer timers use partitioning scheme which also required that some redundant developer timers be removed in favor of the already existing normal timers. Move per thread stats initialization to just after global thread id assignment which is as early as possible. Also put all global stats initialization code in __kmp_stats_init() and all global stats destruction code in __kmp_stats_fini(). Differential Revision: https://reviews.llvm.org/D26361 llvm-svn: 286892
* Introduce dynamic affinity dispatch capabilitiesJonathan Peyton2016-11-1413-721/+633
| | | | | | | | | | | | | | | | | | | | | | | | | This set of changes enables the affinity interface (Either the preexisting native operating system or HWLOC) to be dynamically set at runtime initialization. The point of this change is that we were seeing performance degradations when using HWLOC. This allows the user to use the old affinity mechanisms which on large machines (>64 cores) makes a large difference in initialization time. These changes mostly move affinity code under a small class hierarchy: KMPAffinity class Mask {} KMPNativeAffinity : public KMPAffinity class Mask : public KMPAffinity::Mask KMPHwlocAffinity class Mask : public KMPAffinity::Mask Since all interface functions (for both affinity and the mask implementation) are virtual, the implementation can be chosen at runtime initialization. Differential Revision: https://reviews.llvm.org/D26356 llvm-svn: 286890
* Added check for malloc return.Andrey Churbanov2016-11-101-0/+6
| | | | | | | | Patch by Victor Campos. Differential Revision: https://reviews.llvm.org/D26318 llvm-svn: 286441
* [OpenMP] Enable ThreadSanitizer to check OpenMP programsJonas Hahnfeld2016-11-0712-10/+346
| | | | | | | | | | | | | | | | | | | | | | This patch allows ThreadSanitizer (Tsan) to verify OpenMP programs. It means that no false positive will be reported by Tsan when verifying an OpenMP programs. This patch introduces annotations within the OpenMP runtime module to provide information about thread synchronization to the Tsan runtime. In order to enable the Tsan support when building the runtime, you must enable the TSAN_SUPPORT option with the following environment variable: -DLIBOMP_TSAN_SUPPORT=TRUE The annotations will be enabled in the main shared library (same mechanism of OMPT). Patch by Simone Atzeni and Joachim Protze! Differential Revision: https://reviews.llvm.org/D13072 llvm-svn: 286115
* fixed typo in commentAndrey Churbanov2016-11-031-1/+1
| | | | llvm-svn: 285947
* Change task stealing to always get task from head of victim's deque.Andrey Churbanov2016-11-021-13/+8
| | | | | | Differential Revision: https://reviews.llvm.org/D26187 llvm-svn: 285833
* Fixed problem introduced by part of https://reviews.llvm.org/D21196.Andrey Churbanov2016-11-011-2/+2
| | | | | | | | | | | | Check Task Scheduling Constraint (TSC) on stealing of untied task. This is needed because the untied task can produce tied children those can break TSC if untied is not a descendant of current task. This can cause live lock on complex tyasking tests (e.g. kastors/strassen-task-dep). Differential Revision: https://reviews.llvm.org/D26182 llvm-svn: 285703
* Add more conditions to check whether task waiting is necessary in ↵Andrey Churbanov2016-11-011-4/+4
| | | | | | | | | | kmp_omp_taskwait. Differential Revision: https://reviews.llvm.org/D26058 Patch by Victor Campos llvm-svn: 285678
* Fixed a memory leak related to task dependencies.Andrey Churbanov2016-10-274-13/+65
| | | | | | | | Differential Revision: http://reviews.llvm.org/D25504 Patch by Alex Duran. llvm-svn: 285283
* Fixing typos in __kmp_release_deps trace outputsJonathan Peyton2016-10-261-4/+4
| | | | | | | | Patch by Victor Campos Differential Revision: https://reviews.llvm.org/D25972 llvm-svn: 285244
* Use getpagesize() instead of PAGE_SIZE macro when KMP_OS_LINUX is trueJonathan Peyton2016-10-263-14/+20
| | | | | | | | Patch by Victor Campos Differential Revision: https://reviews.llvm.org/D26001 llvm-svn: 285243
* Fixed memory leak mistakenly introduced by https://reviews.llvm.org/D23115Andrey Churbanov2016-10-201-3/+5
| | | | | | Differential Revision: http://reviews.llvm.org/D25510 llvm-svn: 284747
* [OpenMP] Fix issue with directives used in a macro.Samuel Antao2016-10-201-8/+9
| | | | | | | | | | | | | | | | | | | Summary: If directives are used in a macro, clang complains with: ``` src/projects/openmp/runtime/src/kmp_runtime.c:7486:2: error: embedding a directive within macro arguments has undefined behavior [-Werror,-Wembedded-directive] #if KMP_USE_MONITOR ``` This patch fixes two occurrences of the issue in `kmp_runtime.cpp`. Reviewers: tlwilmar, jlpeyton, AndreyChurbanov, Hahnfeld Subscribers: Hahnfeld, openmp-commits Differential Revision: https://reviews.llvm.org/D25823 llvm-svn: 284728
* Fix OpenMP 4.0 library buildJonathan Peyton2016-10-182-0/+9
| | | | | | | | Patch by Andrey Churbanov Differential Revision: https://reviews.llvm.org/D25505 llvm-svn: 284499
* Fix a compile error on musl-libc due to strerror_r() prototypeMichal Gorny2016-10-181-1/+1
| | | | | | | | | | | | Function strerror_r() has different signatures in different implementations of libc: glibc's version returns a char*, while BSDs and musl return a int. libomp unconditionally assumes glibc on Linux and thus fails to compile against musl-libc. This patch addresses this issue. Differential Revision: https://reviews.llvm.org/D25071 llvm-svn: 284492
* Mixed type atomic routines added for capture and update/capture reverse.Jonathan Peyton2016-10-183-1/+452
| | | | | | | | | | | | New mixed type atomic routines added for regular capture operations as well as reverse update/capture operations. LHS - all integer and float types (no complex so far), RHS - float16. Patch by Olga Malysheva Differential Revision: https://reviews.llvm.org/D25275 llvm-svn: 284489
* Code cleanup for the runtime without monitor threadJonathan Peyton2016-10-075-8/+46
| | | | | | | | | | This change removes/disables unnecessary code when monitor thread is not used. Patch by Hansang Bae Differential Revision: https://reviews.llvm.org/D25102 llvm-svn: 283577
* Enable omp_get_schedule() to return static steal type.Jonathan Peyton2016-10-073-4/+88
| | | | | | | As the code is now, calling omp_get_schedule() when OMP_SCHEDULE=static_steal will cause an assert. llvm-svn: 283576
* [cmake] Fix for a bug https://llvm.org/bugs/show_bug.cgi?id=30489 "Cannot ↵Paul Osmialowski2016-09-301-1/+3
| | | | | | | | build with -DLIBOMP_FORTRAN_MODULES=True" Differential Revision: https://reviews.llvm.org/D24959 llvm-svn: 282965
* Insert missing checks for KMP_AFFINITY_CAPABLE() in affinity API.Jonathan Peyton2016-09-301-0/+12
| | | | | | | If affinity is not capable, then these API functions will perform the stubs version. llvm-svn: 282947
* [test] Support 'lit' executable nameMichal Gorny2016-09-301-1/+1
| | | | | | | | | Support finding lit as plain 'lit', which is the name used by setup.py in LLVM's utils/lit. Differential Revision: https://reviews.llvm.org/D25072 llvm-svn: 282876
* Fix incorrect OpenMP version in Fortran module.Jonathan Peyton2016-09-303-3/+9
| | | | | | | | | | | | | Add check for "45" version to use "201511" string for OpenMP 4.5, otherwise "200505" is used in Fortran module. Also, fix kmp_openmp_version variable (used for the debugger, e.g.) and kmp_version_omp_api that is used in KMP_VERSION=1 output. Patch by Olga Malysheva Differential Revision: https://reviews.llvm.org/D24761 llvm-svn: 282868
* Mixed type atomic routines for unsigned integers.Jonathan Peyton2016-09-272-0/+36
| | | | | | | | | | New routines should be used for atomics like "<int>OP=<float>" when <int> is unsigned. Using functions __kmpc_atomic_fixed<bits>_<op>_fp) produces incorrect results Differential Revision: https://reviews.llvm.org/D24756 llvm-svn: 282509
* Disable monitor thread creation by default.Jonathan Peyton2016-09-279-6/+126
| | | | | | | | | | | | | This change set disables creation of the monitor thread by default. The global counter maintained by the monitor thread was replaced by logic that uses system time directly, and cyclic yielding on Linux target was also removed since there was no clear benefit of using it. Turning on KMP_USE_MONITOR variable (=1) enables creation of monitor thread again if it is really necessary for some reasons. Differential Revision: https://reviews.llvm.org/D24739 llvm-svn: 282507
* Fix respecting LIBOMP_LLVM_LIT_EXECUTABLE as full pathMichal Gorny2016-09-191-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | Fix lit search to correctly respect LIBOMP_LLVM_LIT_EXECUTABLE as full program path. The variable passed to find_program() is created by CMake as a cache variable, and therefore can be directly overriden by the user. Since this was the design of LIBOMP_LLVM_LIT_EXECUTABLE (as can be deduced from the error messages) and there is no other use of LIT_EXECUTABLE, remove the redundant variable and pass LIBOMP_LLVM_LIT_EXECUTABLE directly to find_program(). Furthermore, the previous code did not work since the HINTS argument specifies more search directories rather than expected full path. Quoting the CMake documentation: > 3. Search the paths specified by the HINTS option. These should be > paths computed by system introspection, such as a hint provided by > the location of another item already found. Hard-coded guesses should > be specified with the PATHS option. Differential Revision: https://reviews.llvm.org/D24710 llvm-svn: 281887
* [cmake] Make libgomp & libiomp5 alias install optionalMichal Gorny2016-09-142-7/+13
| | | | | | | | | | | Introduce a new LIBOMP_INSTALL_VARIABLES cache variable that can be used to disable creating libgomp and libiomp5 aliases on 'make install'. Those aliases are undesired e.g. on Gentoo systems where libomp is used purely by clang. Differential Revision: https://reviews.llvm.org/D24563 llvm-svn: 281512
* [OMPT] fix task frame information for gomp interfaceJonas Hahnfeld2016-09-144-52/+56
| | | | | | | | | | | Previous differencials D23305-D23310 changed task frame information management only for the kmp interface, but not for the whole gomp interface. This broke some testcases when building with gcc. This patch fixes the broken task frame information for the gomp interface. Patch by Joachim Protze! Differential Revision: https://reviews.llvm.org/D24502 llvm-svn: 281468
* [OMPT] save exit address to lwt if availableJonas Hahnfeld2016-09-142-27/+22
| | | | | | | | | | | In case, the current team is a serialized team (lwt), the frame information should be written to this data structure. Before, nested serialized teams would overwrite the same task information. Patch by Joachim Protze! Differential Revision: https://reviews.llvm.org/D23310 llvm-svn: 281467
OpenPOWER on IntegriCloud