[Openmp-commits] [PATCH] D35273: Add recursive task scheduling strategy to taskloop implementation

Jonathan Peyton via Phabricator via Openmp-commits openmp-commits at lists.llvm.org
Tue Jul 11 13:38:42 PDT 2017


jlpeyton created this revision.

Patch by Andrey Churbanov

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.


Repository:
  rL LLVM

https://reviews.llvm.org/D35273

Files:
  runtime/src/kmp.h
  runtime/src/kmp_global.cpp
  runtime/src/kmp_settings.cpp
  runtime/src/kmp_tasking.cpp
  runtime/test/tasking/kmp_taskloop.c
  runtime/test/tasking/omp_taskloop_grainsize.c
  runtime/test/tasking/omp_taskloop_num_tasks.c

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D35273.106090.patch
Type: text/x-patch
Size: 26253 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20170711/7d16bac4/attachment-0001.bin>


More information about the Openmp-commits mailing list