Skip to content
  1. Dec 14, 2016
  2. Dec 08, 2016
  3. Dec 01, 2016
  4. Nov 28, 2016
  5. Nov 21, 2016
  6. Nov 14, 2016
    • Jonathan Peyton's avatar
      Update stats-gathering code · 5375fe82
      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
      5375fe82
    • Jonathan Peyton's avatar
      Introduce dynamic affinity dispatch capabilities · 1cdd87ad
      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
      1cdd87ad
  7. Nov 10, 2016
  8. Nov 07, 2016
    • Jonas Hahnfeld's avatar
      [OpenMP] Enable ThreadSanitizer to check OpenMP programs · 50fed047
      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
      50fed047
  9. Nov 03, 2016
  10. Nov 02, 2016
  11. Nov 01, 2016
  12. Oct 27, 2016
  13. Oct 26, 2016
  14. Oct 20, 2016
  15. Oct 18, 2016
  16. Oct 07, 2016
  17. Oct 01, 2016
  18. Sep 30, 2016
  19. Sep 27, 2016
  20. Sep 19, 2016
    • Michal Gorny's avatar
      Fix respecting LIBOMP_LLVM_LIT_EXECUTABLE as full path · cd2bfb1e
      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
      cd2bfb1e
  21. Sep 14, 2016
    • Michal Gorny's avatar
      [cmake] Make libgomp & libiomp5 alias install optional · 23132ebb
      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
      23132ebb
    • Jonas Hahnfeld's avatar
      [OMPT] fix task frame information for gomp interface · 848d6906
      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
      848d6906
    • Jonas Hahnfeld's avatar
      [OMPT] save exit address to lwt if available · dd9a05d5
      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
      dd9a05d5
    • Jonas Hahnfeld's avatar
      [OMPT] fix __ompt_get_teaminfo to consult lwt entries of parent teams · 28ea24bb
      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
      28ea24bb
    • Jonas Hahnfeld's avatar
      [OMPT] Reset task exit frame when execution is finished · 8a27064e
      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
      8a27064e
    • Jonas Hahnfeld's avatar
      [OMPT] Align implementation of reenter frame address to latest (frozen) version of OMPT spec · fd0614d8
      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
      fd0614d8
    • Jonas Hahnfeld's avatar
      [OMPT] extend ompt tests by checks for frame pointers · 464cdca9
      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
      464cdca9
  22. Sep 12, 2016
    • Jonathan Peyton's avatar
      Fix bitmask upper bounds check · 7c465a5f
      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
      7c465a5f
Loading