<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>As I recall, we currently have an issue with taskloop where all
      tasks are put on the primary thread's queue and then all threads
      steal from that thread's queue (thus giving suboptimal scheduling
      locality). Is that (still) true, and if so, does this change
      affect that in any way?</p>
    Thanks again,<br>
    Hal<br>
    <br>
    <div class="moz-cite-prefix">On 07/11/2017 03:38 PM, Jonathan Peyton
      via Phabricator via Openmp-commits wrote:<br>
    </div>
    <blockquote
cite="mid:differential-rev-PHID-DREV-z5u5tanzyehnkbml7uvd-req@reviews.llvm.org"
      type="cite">
      <pre wrap="">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

<a class="moz-txt-link-freetext" href="https://reviews.llvm.org/D35273">https://reviews.llvm.org/D35273</a>

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

</pre>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Openmp-commits mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Openmp-commits@lists.llvm.org">Openmp-commits@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-commits">http://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-commits</a>
</pre>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory</pre>
  </body>
</html>