| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent f2e874e commit fb54f03
33 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -247,7 +247,7 @@ <h3>Contents</h3> | |||
| 247 | 247 | <span class="c1">// std::cout << "parallel iteration on item " << i << '\n';</span> | |
| 248 | 248 | <span class="c1">// });</span> | |
| 249 | 249 | ||
| 250 | - <span class="n">init</span><span class="p">.</span><span class="n">precede</span><span class="p">(</span><span class="n">pf</span><span class="p">);</span><span class="w"></span></pre><p>When <code>init</code> finishes, the parallel-for task <code>pf</code> will see <code>first</code> pointing to the beginning of <code>vec</code> and <code>last</code> pointing to the end of <code>vec</code> and performs parallel iterations over the 1000 items. The two tasks form an end-to-end task graph where the parameters of parallel-for are computed on the fly.</p></section><section id="ParallelIterationsConfigureAPartitioner"><h2><a href="#ParallelIterationsConfigureAPartitioner">Configure a Partitioner</a></h2><p>You can configure a partitioner for parallel-iteration tasks to run with different scheduling methods, such as guided partitioning, dynamic partitioning, and static partitioning. The following example create two parallel-iteration tasks using two different partitioners, one with the static partitioning algorithm and another one with the guided partitioning algorithm:</p><pre class="m-code"><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="n">vec</span><span class="p">(</span><span class="mi">1024</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span><span class="w"></span> | ||
| 250 | + <span class="n">init</span><span class="p">.</span><span class="n">precede</span><span class="p">(</span><span class="n">pf</span><span class="p">);</span><span class="w"></span></pre><p>When <code>init</code> finishes, the parallel-for task <code>pf</code> will see <code>first</code> pointing to the beginning of <code>vec</code> and <code>last</code> pointing to the end of <code>vec</code> and performs parallel iterations over the 1000 items. The two tasks form an end-to-end task graph where the parameters of parallel-for are computed on the fly.</p></section><section id="ParallelIterationsConfigureAPartitioner"><h2><a href="#ParallelIterationsConfigureAPartitioner">Configure a Partitioner</a></h2><p>You can configure a partitioner for parallel-iteration tasks to run with different scheduling methods, such as guided partitioning, dynamic partitioning, and static partitioning. The following example creates two parallel-iteration tasks using two different partitioners, one with the static partitioning algorithm and another one with the guided partitioning algorithm:</p><pre class="m-code"><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="n">vec</span><span class="p">(</span><span class="mi">1024</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span><span class="w"></span> | ||
| 251 | 251 | ||
| 252 | 252 | <span class="n">tf</span><span class="o">::</span><span class="n">ExecutionPolicy</span><span class="o"><</span><span class="n">tf</span><span class="o">::</span><span class="n">StaticPartitioner</span><span class="o">></span><span class="w"> </span><span class="n">static_partitioner</span><span class="p">;</span><span class="w"></span> | |
| 253 | 253 | <span class="n">tf</span><span class="o">::</span><span class="n">ExecutionPolicy</span><span class="o"><</span><span class="n">tf</span><span class="o">::</span><span class="n">GuidedPartitioner</span><span class="o">></span><span class="w"> </span><span class="n">guided_partitioner</span><span class="p">;</span><span class="w"></span> | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -105,7 +105,7 @@ <h3>Contents</h3> | |||
| 105 | 105 | <span class="w"> </span><span class="p">}</span><span class="w"> </span> | |
| 106 | 106 | <span class="p">);</span><span class="w"> </span> | |
| 107 | 107 | <span class="n">executor</span><span class="p">.</span><span class="n">run</span><span class="p">(</span><span class="n">taskflow</span><span class="p">).</span><span class="n">wait</span><span class="p">();</span><span class="w"> </span> | |
| 108 | - <span class="n">assert</span><span class="p">(</span><span class="n">sum</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">6</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">7</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">8</span><span class="p">);</span><span class="w"> </span><span class="c1">// sum will be 36 </span></pre><p>The order in which we apply the binary operator on the transformed elements is <em>unspecified</em>. It is possible that the binary operator will take <em>r-value</em> in both arguments, for example, <code>bop(uop(*itr1), uop(*itr2))</code>, due to the transformed temporaries. When data passing is expensive, you may define the result type <code>T</code> to be move-constructible.</p></section><section id="ParallelReductionCfigureAPartitioner"><h2><a href="#ParallelReductionCfigureAPartitioner">Configure a Partitioner</a></h2><p>You can configure a partitioner for parallel-reduction tasks to run with different scheduling methods, such as guided partitioning, dynamic partitioning, and static partitioning. The following example create two parallel-reduction tasks using two different partitioners, one with the static partitioning algorithm and another one with the guided partitioning algorithm:</p><pre class="m-code"><span class="n">tf</span><span class="o">::</span><span class="n">StaticPartitioner</span><span class="w"> </span><span class="n">static_partitioner</span><span class="p">;</span><span class="w"></span> | ||
| 108 | + <span class="n">assert</span><span class="p">(</span><span class="n">sum</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">6</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">7</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">8</span><span class="p">);</span><span class="w"> </span><span class="c1">// sum will be 36 </span></pre><p>The order in which we apply the binary operator on the transformed elements is <em>unspecified</em>. It is possible that the binary operator will take <em>r-value</em> in both arguments, for example, <code>bop(uop(*itr1), uop(*itr2))</code>, due to the transformed temporaries. When data passing is expensive, you may define the result type <code>T</code> to be move-constructible.</p></section><section id="ParallelReductionCfigureAPartitioner"><h2><a href="#ParallelReductionCfigureAPartitioner">Configure a Partitioner</a></h2><p>You can configure a partitioner for parallel-reduction tasks to run with different scheduling methods, such as guided partitioning, dynamic partitioning, and static partitioning. The following example creates two parallel-reduction tasks using two different partitioners, one with the static partitioning algorithm and another one with the guided partitioning algorithm:</p><pre class="m-code"><span class="n">tf</span><span class="o">::</span><span class="n">StaticPartitioner</span><span class="w"> </span><span class="n">static_partitioner</span><span class="p">;</span><span class="w"></span> | ||
| 109 | 109 | <span class="n">tf</span><span class="o">::</span><span class="n">GuidedPartitioner</span><span class="w"> </span><span class="n">guided_partitioner</span><span class="p">;</span><span class="w"></span> | |
| 110 | 110 | ||
| 111 | 111 | <span class="kt">int</span><span class="w"> </span><span class="n">sum1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">100</span><span class="p">,</span><span class="w"> </span><span class="n">sum2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">100</span><span class="p">;</span><span class="w"></span> | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -95,7 +95,7 @@ <h3>Contents</h3> | |||
| 95 | 95 | <span class="w"> </span><span class="p">[](</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="p">){</span><span class="w"> </span> | |
| 96 | 96 | <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">j</span><span class="p">;</span><span class="w"></span> | |
| 97 | 97 | <span class="w"> </span><span class="p">}</span><span class="w"></span> | |
| 98 | - <span class="p">);</span><span class="w"></span></pre></section><section id="ParallelTransformsCfigureAPartitioner"><h2><a href="#ParallelTransformsCfigureAPartitioner">Configure a Partitioner</a></h2><p>You can configure a partitioner for parallel-transform tasks to run with different scheduling methods, such as guided partitioning, dynamic partitioning, and static partitioning. The following example create two parallel-transform tasks using two different partitioners, one with the static partitioning algorithm and another one with the guided partitioning algorithm:</p><pre class="m-code"><span class="n">tf</span><span class="o">::</span><span class="n">StaticPartitioner</span><span class="w"> </span><span class="n">static_partitioner</span><span class="p">;</span><span class="w"></span> | ||
| 98 | + <span class="p">);</span><span class="w"></span></pre></section><section id="ParallelTransformsCfigureAPartitioner"><h2><a href="#ParallelTransformsCfigureAPartitioner">Configure a Partitioner</a></h2><p>You can configure a partitioner for parallel-transform tasks to run with different scheduling methods, such as guided partitioning, dynamic partitioning, and static partitioning. The following example creates two parallel-transform tasks using two different partitioners, one with the static partitioning algorithm and another one with the guided partitioning algorithm:</p><pre class="m-code"><span class="n">tf</span><span class="o">::</span><span class="n">StaticPartitioner</span><span class="w"> </span><span class="n">static_partitioner</span><span class="p">;</span><span class="w"></span> | ||
| 99 | 99 | <span class="n">tf</span><span class="o">::</span><span class="n">GuidedPartitioner</span><span class="w"> </span><span class="n">guided_partitioner</span><span class="p">;</span><span class="w"></span> | |
| 100 | 100 | ||
| 101 | 101 | <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="n">src1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">};</span><span class="w"></span> | |
| Back | FazBrowse Home | New Git URL |
0 commit comments