- Dec 14, 2016
-
-
Andrey Churbanov authored
Patch by Victor Campos. Differential Revision: https://reviews.llvm.org/D27647 llvm-svn: 289640
-
- Dec 08, 2016
-
-
Sylvestre Ledru authored
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
-
- Dec 01, 2016
-
-
Andrey Churbanov authored
llvm-svn: 288368
-
- Nov 28, 2016
-
-
Jonathan Peyton authored
Patch by Victor Campos Differential Revision: https://reviews.llvm.org/D27172 llvm-svn: 288056
-
Andrey Churbanov authored
Cleanup: memory leaks on warnings printing fixed; some memory freeing cleaned; poor indents and one typo fixed. Patch by Victor Campos. Differential Revision: https://reviews.llvm.org/D26786 llvm-svn: 288054
-
- Nov 21, 2016
-
-
Jonathan Peyton authored
llvm-svn: 287552
-
Jonathan Peyton authored
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
-
- Nov 14, 2016
-
-
Jonathan Peyton authored
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
-
Jonathan Peyton authored
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
-
- Nov 10, 2016
-
-
Andrey Churbanov authored
Patch by Victor Campos. Differential Revision: https://reviews.llvm.org/D26318 llvm-svn: 286441
-
- Nov 07, 2016
-
-
Jonas Hahnfeld authored
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
-
- Nov 03, 2016
-
-
Andrey Churbanov authored
llvm-svn: 285947
-
- Nov 02, 2016
-
-
Andrey Churbanov authored
Differential Revision: https://reviews.llvm.org/D26187 llvm-svn: 285833
-
- Nov 01, 2016
-
-
https://reviews.llvm.org/D21196Andrey Churbanov authored
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
-
Andrey Churbanov authored
Differential Revision: https://reviews.llvm.org/D26058 Patch by Victor Campos llvm-svn: 285678
-
- Oct 27, 2016
-
-
Andrey Churbanov authored
Differential Revision: http://reviews.llvm.org/D25504 Patch by Alex Duran. llvm-svn: 285283
-
- Oct 26, 2016
-
-
Jonathan Peyton authored
Patch by Victor Campos Differential Revision: https://reviews.llvm.org/D25972 llvm-svn: 285244
-
Jonathan Peyton authored
Patch by Victor Campos Differential Revision: https://reviews.llvm.org/D26001 llvm-svn: 285243
-
- Oct 20, 2016
-
-
https://reviews.llvm.org/D23115Andrey Churbanov authored
Differential Revision: http://reviews.llvm.org/D25510 llvm-svn: 284747
-
Samuel Antao authored
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
-
- Oct 18, 2016
-
-
Jonathan Peyton authored
Patch by Andrey Churbanov Differential Revision: https://reviews.llvm.org/D25505 llvm-svn: 284499
-
Michal Gorny authored
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
-
Jonathan Peyton authored
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
-
- Oct 07, 2016
-
-
Jonathan Peyton authored
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
-
Jonathan Peyton authored
As the code is now, calling omp_get_schedule() when OMP_SCHEDULE=static_steal will cause an assert. llvm-svn: 283576
-
- Oct 01, 2016
-
-
https://llvm.org/bugs/show_bug.cgi?id=30489Paul Osmialowski authored
[cmake] Fix for a bug https://llvm.org/bugs/show_bug.cgi?id=30489 "Cannot build with -DLIBOMP_FORTRAN_MODULES=True" Differential Revision: https://reviews.llvm.org/D24959 llvm-svn: 282965
-
- Sep 30, 2016
-
-
Jonathan Peyton authored
If affinity is not capable, then these API functions will perform the stubs version. llvm-svn: 282947
-
Michal Gorny authored
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
-
Jonathan Peyton authored
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
-
- Sep 27, 2016
-
-
Jonathan Peyton authored
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
-
Jonathan Peyton authored
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
-
- Sep 19, 2016
-
-
Michal Gorny authored
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
-
- Sep 14, 2016
-
-
Michal Gorny authored
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
-
Jonas Hahnfeld authored
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
-
Jonas Hahnfeld authored
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
-
Jonas Hahnfeld authored
The comment already states, that this function should work similarly as __ompt_get_taskinfo. The function only looked for lwt entries of the current team, but not when unrolling the parents. This fix aligns the implementation to __ompt_get_taskinfo. The new test case creates a single theaded team (->lwt) and then a nested active team. Before the innermost print_id(1) would deliver a different team then the outer print_id(0). Patch by Joachim Protze! Differential Revision: https://reviews.llvm.org/D23309 llvm-svn: 281466
-
Jonas Hahnfeld authored
The exit address is set when execution of a task is started and should be reset as soon as the execution is finished. Especially for the asm implementation of __kmp_invoke_microtask, resetting in this call would be painfull, so reset just after the invokation. The testcase shows the effect of this patch: Before, the implicit barriers at the end of an implicit task would see an exit address for the implicit task. This barrier is a task scheduling point. Thus, any explicit task scheduled there would see an exit, but no reenter address for the implicit task. Patch by Joachim Protze! Differential Revision: https://reviews.llvm.org/D23307 llvm-svn: 281465
-
Jonas Hahnfeld authored
The latest OMPT spec changed the semantic of a tasks reenter frame to be the application frame, that will be entered, when the runtime frame drops. Before it was the last frame in the runtime. This doesn't work for some gcc execution pathes or even clang generated code for : Since there is no runtime frame between the executed task and the encountering task. The test case compares exit and reenter addresses against addresses captured in application code Patch by Joachim Protze! Differential Revision: https://reviews.llvm.org/D23305 llvm-svn: 281464
-
Jonas Hahnfeld authored
OMPT tests can check for right frame information of tasks: * parent_task_frame was directly printed as a pointer, but actually points to a struct ompt_frame {void*, void*} * NULL is printed in the beginning of execution and loaded to FileChecker variable [[NULL]] * implicit tasks now also print their frame information * macro to print frame address from application * print task info for barrier begin Patch by Joachim Protze! Differential Revision: https://reviews.llvm.org/D23304 llvm-svn: 281463
-
- Sep 12, 2016
-
-
Jonathan Peyton authored
Rather than checking KMP_CPU_SETSIZE, which doesn't exist when using Hwloc, we use the get_max_proc() function which can vary based on the operating system. For example on Windows with multiple processor groups, it might be the case that the highest bit possible in the bitmask is not equal to the number of hardware threads on the machine but something higher than that. Differential Revision: https://reviews.llvm.org/D24206 llvm-svn: 281245
-