Skip to content
  1. Nov 03, 2017
  2. Nov 02, 2017
  3. Nov 01, 2017
    • Jonathan Peyton's avatar
      [OpenMP] Fix race condition in omp_init_lock · 3d18a37c
      Jonathan Peyton authored
      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
      3d18a37c
    • Joachim Protze's avatar
      Update implementation of OMPT to the specification OpenMP 5.0 Preview 1 (TR4). · 82e94a59
      Joachim Protze authored
      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
      82e94a59
  4. Oct 30, 2017
  5. Oct 26, 2017
    • Jonathan Peyton's avatar
      Fix fatal error message displaying · 5e6cb902
      Jonathan Peyton authored
      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
      5e6cb902
  6. Oct 24, 2017
    • Jonathan Peyton's avatar
      Disable threadprivate data cleanup if runtime is terminating · dff0ee2f
      Jonathan Peyton authored
      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
      dff0ee2f
  7. Oct 20, 2017
  8. Oct 06, 2017
    • Jonathan Peyton's avatar
      KMP_HW_SUBSET vs KMP_PLACE_THREADS rival envirables fix · 3f850bfc
      Jonathan Peyton authored
      If both KMP_HW_SUBSET and KMP_PLACE_THREADS are set and KMP_PLACE_THREADS gets
      parsed first, then the current environment variable parser rejects both and
      neither get used. This patch uses the rivals mechanism that is used for other
      environment variable groups (e.g., KMP_STACKSIZE, GOMP_STACKSIZE, OMP_STACKSIZE).
      If both are set, then it tells the user that it is ignoring KMP_PLACE_THREADS in
      favor of KMP_HW_SUBSET. The message about deprecating KMP_PLACE_THREADS when it
      is set is still printed regardless.
      
      Differential Revision: https://reviews.llvm.org/D38292
      
      llvm-svn: 315091
      3f850bfc
  9. Sep 29, 2017
  10. Sep 27, 2017
    • Jonathan Peyton's avatar
      Remove unnecessary semicolons · bd3a7633
      Jonathan Peyton authored
      Removes semicolons after if {} blocks, function definitions, etc.
      I was able to apply the large OMPT patch cleanly on top of this one
      with no conflicts.
      
      llvm-svn: 314340
      bd3a7633
  11. Sep 26, 2017
  12. Sep 05, 2017
  13. Aug 20, 2017
  14. Aug 17, 2017
  15. Aug 14, 2017
  16. Aug 11, 2017
  17. Aug 02, 2017
    • Jonathan Peyton's avatar
      Exclude version symbols for static libomp · 038855ad
      Jonathan Peyton authored
      We use symbol versioning for GNU-compatibility but libgomp has versioned symbols
      only in the shared library but not in the static.
      Moreover, version symbols in the static library can cause an error at link time.
      
      Patch by Olga Malysheva
      
      Differential Revision: https://reviews.llvm.org/D36225
      
      llvm-svn: 309877
      038855ad
    • Jonathan Peyton's avatar
      Move lock acquire/release functions in task deque cleanup code · 1b536724
      Jonathan Peyton authored
      The original locations can be reached without initializing the lock variable
      (td_deque_lock), so it is potentially unsafe.  It is guaranteed that the lock
      is initialized if the deque (td_deque) is not NULL, and lock functions can be
      safely called.
      
      Patch by Hansang Bae
      
      Differential Revision: https://reviews.llvm.org/D36017
      
      llvm-svn: 309875
      1b536724
    • Jonathan Peyton's avatar
      Add new envirable KMP_TEAMS_THREAD_LIMIT · 4f90c82a
      Jonathan Peyton authored
      This change adds a new environment variable, KMP_TEAMS_THREAD_LIMIT, which is
      used to set a new global variable, __kmp_teams_max_nth, which is checked when
      determining the size and quantity of teams that will be created in the teams
      construct. Specifically, it is a limit on the total number of threads in a given
      teams construct. It differentiates the limits for the teams construct from the
      limits for regular parallel regions (KMP_DEVICE_THREAD_LIMIT/__kmp_max_nth and
      OMP_THREAD_LIMIT/__kmp_cg_max_nth). When each individual team is formed, it is
      still subject to those limits. After the clauses to the teams construct are
      parsed and calculated, we check to make sure we are within this limit, and if
      not, reduce num_threads per team and/or number of teams, accordingly. The
      default value is set to the number of available processors on the system.
      
      Patch by Terry Wilmarth
      
      Differential Revision: https://reviews.llvm.org/D36009
      
      llvm-svn: 309874
      4f90c82a
  18. Jul 28, 2017
  19. Jul 27, 2017
    • Jonathan Peyton's avatar
      Fix implementation of OMP_THREAD_LIMIT · f4392463
      Jonathan Peyton authored
      This change fixes the implementation of OMP_THREAD_LIMIT. The implementation of
      this previously was not restricted to a contention group (but it should be,
      according to the spec), and this is fixed here. A field is added to root thread
      to store a counter of the threads in the contention group. An extra check is
      added when reserving threads for a parallel region that checks this variable and
      compares to threadlimit-var, which is implemented as a new global variable,
      kmp_cg_max_nth. Associated settings changes were also made, and clean up of
      comments that referred to OMP_THREAD_LIMIT, but should refer to the new
      KMP_DEVICE_THREAD_LIMIT (added in an earlier patch).
      
      Patch by Terry Wilmarth
      
      Differential Revision: https://reviews.llvm.org/D35912
      
      llvm-svn: 309319
      f4392463
  20. Jul 26, 2017
    • Jonathan Peyton's avatar
      Introduce KMP_DEVICE_THREAD_LIMIT · 09244f39
      Jonathan Peyton authored
      This change drops in KMP_DEVICE_THREAD_LIMIT to replace KMP_MAX_THREADS. It's
      possible there will eventually be a OMP_DEVICE_THREAD_LIMIT, and we need
      something to distinguish from OMP_THREAD_LIMIT, which is currently implemented
      incorrectly (the fix for that will be added soon in a separate patch).
      KMP_ALL_THREADS is deprecated here, but we can keep the "all" option on
      KMP_DEVICE_THREAD_LIMIT to support that functionality. KMP_DEVICE_THREAD_LIMIT
      now has priority over its deprecated rival KMP_ALL_THREADS. I also cleaned up
      some comments that incorrectly referred to non-existent kmp_max_threads variable
      instead of kmp_max_nth.
      
      I've left the name of where this setting eventually ends up as
      __kmp_max_nth, for now.
      
      This change does not change much in the way of functionality. It does NOT change
      OMP_THREAD_LIMIT. It's just cleaning up and setting up for that.
      
      Patch by Terry Wilmarth
      
      Differential Revision: https://reviews.llvm.org/D35860
      
      llvm-svn: 309168
      09244f39
    • Jonas Hahnfeld's avatar
      [CMake] Disable building libomptarget and add CMake switch · 203c7307
      Jonas Hahnfeld authored
      Introduce OPENMP_ENABLE_LIBOMPTARGET which defaults to OFF at the moment.
      
      libomptarget is not yet ready for prime time:
       - Offloading to NVIDIA GPUs is not completed yet (compiler, device RTL)
       - The generic ELF plugin for offloading to the host (meant for testing)
         uses a single instance of the OpenMP runtime (libomp). That is why
         omp_is_initial_device() returns 1 which makes the tests fail.
      Because of these reasons, we want to disable building (and testing!)
      for release 5.0.
      
      See https://bugs.llvm.org/show_bug.cgi?id=33859
      
      Differential Revision: https://reviews.llvm.org/D35719
      
      llvm-svn: 309115
      203c7307
  21. Jul 25, 2017
  22. Jul 21, 2017
  23. Jul 19, 2017
  24. Jul 18, 2017
    • Dimitry Andric's avatar
      For KMP_PAGE_SIZE, use getpagesize() on Unix, GetSystemInfo() on Windows · 0c7238b2
      Dimitry Andric authored
      Summary:
      The kmp_os.h header is defining the `PAGE_SIZE` macro unconditionally,
      even while it is only used directly after its definition, for the
      Windows implementation of the `KMP_GET_PAGE_SIZE()` macro.
      
      On at least FreeBSD, but likely all other BSDs too, this macro conflicts
      with the one defined in system headers, so remove it, since nothing else
      uses it.  Make all Unixes use `getpagesize()` instead, and use
      `GetSystemInfo()` for the Windows case.
      
      Reviewers: jlpeyton, jcownie, emaste, AndreyChurbanov
      
      Reviewed By: AndreyChurbanov
      
      Subscribers: AndreyChurbanov, hfinkel, zturner
      
      Differential Revision: https://reviews.llvm.org/D35072
      
      llvm-svn: 308355
      0c7238b2
    • Jonathan Peyton's avatar
      Fix failing taskloop tests by omitting gcc · 1c50ee64
      Jonathan Peyton authored
      We do not have GOMP interface support for taskloop yet.
      
      llvm-svn: 308351
      1c50ee64
    • Jonathan Peyton's avatar
      Add recursive task scheduling strategy to taskloop implementation · 93e17cfe
      Jonathan Peyton authored
      Summary:
      Taskloop implementation is extended by using recursive task scheduling.
      Envirable KMP_TASKLOOP_MIN_TASKS added as a manual threshold for the user
      to switch from recursive to linear tasks scheduling.
      
      Details:
      * The calculations for the loop parameters are moved from __kmp_taskloop_linear
        upper level
      * Initial calculation is done in the __kmpc_taskloop, further range splitting
        is done in the __kmp_taskloop_recur.
      * Added threshold to switch from recursive to linear tasks scheduling;
      * One half of split range is scheduled as an internal task which just moves
        sub-range parameters to the stealing thread that continues recursive
        scheduling (if number of tasks still enough), the other half is processed
        recursively;
      * Internal task duplication routine fixed to assign parent task, that was not
        needed when all tasks were scheduled by same thread, but is needed now.
      
      Patch by Andrey Churbanov
      
      Differential Revision: https://reviews.llvm.org/D35273
      
      llvm-svn: 308338
      93e17cfe
    • Andrey Churbanov's avatar
      Fix sporadic segfaults in tasking tests. · 71483f2d
      Andrey Churbanov authored
      Patch by Terry Wilmarth
      
      Differential Revision: https://reviews.llvm.org/D35535
      
      llvm-svn: 308298
      71483f2d
    • Andrey Churbanov's avatar
      OpenMP RTL cleanup: nullify pointer after memory freeing · ddc38722
      Andrey Churbanov authored
      Differential Revision: https://reviews.llvm.org/D35497
      
      llvm-svn: 308274
      ddc38722
  25. Jul 17, 2017
Loading