<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.9.6" xml:lang="en-US">
  <compounddef id="classtf_1_1RandomPartitioner" kind="class" language="C++" prot="public">
    <compoundname>tf::RandomPartitioner</compoundname>
    <basecompoundref refid="classtf_1_1PartitionerBase" prot="public" virt="non-virtual">tf::PartitionerBase</basecompoundref>
    <includes refid="partitioner_8hpp" local="no">partitioner.hpp</includes>
      <sectiondef kind="private-attrib">
      <memberdef kind="variable" id="classtf_1_1RandomPartitioner_1a583827448d43322a6c282fa165b21a21" prot="private" static="no" mutable="no">
        <type>float</type>
        <definition>float tf::RandomPartitioner::_alpha</definition>
        <argsstring></argsstring>
        <name>_alpha</name>
        <qualifiedname>tf::RandomPartitioner::_alpha</qualifiedname>
        <initializer>{0.01f}</initializer>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" line="519" column="9" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" bodystart="519" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classtf_1_1RandomPartitioner_1abaca67c5c1cc95d468cf7f894e78f240" prot="private" static="no" mutable="no">
        <type>float</type>
        <definition>float tf::RandomPartitioner::_beta</definition>
        <argsstring></argsstring>
        <name>_beta</name>
        <qualifiedname>tf::RandomPartitioner::_beta</qualifiedname>
        <initializer>{0.5f}</initializer>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" line="520" column="9" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" bodystart="520" bodyend="-1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="public-func">
      <memberdef kind="function" id="classtf_1_1RandomPartitioner_1af8a23f5bad60d742c4d9ede4421e2fab" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type></type>
        <definition>tf::RandomPartitioner::RandomPartitioner</definition>
        <argsstring>()=default</argsstring>
        <name>RandomPartitioner</name>
        <qualifiedname>tf::RandomPartitioner::RandomPartitioner</qualifiedname>
        <briefdescription>
<para>default constructor </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" line="412" column="3"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1RandomPartitioner_1a07113b4c4839437228dfffd0f4c2997a" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type></type>
        <definition>tf::RandomPartitioner::RandomPartitioner</definition>
        <argsstring>(size_t cz)</argsstring>
        <name>RandomPartitioner</name>
        <qualifiedname>tf::RandomPartitioner::RandomPartitioner</qualifiedname>
        <param>
          <type>size_t</type>
          <declname>cz</declname>
        </param>
        <briefdescription>
<para>constructs a random partitioner </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" line="417" column="3" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" bodystart="417" bodyend="417"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1RandomPartitioner_1a3bb5314f320c70e7d947c1deda46858b" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type></type>
        <definition>tf::RandomPartitioner::RandomPartitioner</definition>
        <argsstring>(float alpha, float beta)</argsstring>
        <name>RandomPartitioner</name>
        <qualifiedname>tf::RandomPartitioner::RandomPartitioner</qualifiedname>
        <param>
          <type>float</type>
          <declname>alpha</declname>
        </param>
        <param>
          <type>float</type>
          <declname>beta</declname>
        </param>
        <briefdescription>
<para>constructs a random partitioner with the given parameters </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" line="422" column="3" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" bodystart="422" bodyend="422"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1RandomPartitioner_1a2ffefd05bda25e3ed25cedc4e7ff65eb" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>float</type>
        <definition>float tf::RandomPartitioner::alpha</definition>
        <argsstring>() const</argsstring>
        <name>alpha</name>
        <qualifiedname>tf::RandomPartitioner::alpha</qualifiedname>
        <briefdescription>
<para>queries the <computeroutput>alpha</computeroutput> value </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" line="427" column="9" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" bodystart="427" bodyend="427"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1RandomPartitioner_1a5d2f8decb307e255c52e5df1227f4825" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>float</type>
        <definition>float tf::RandomPartitioner::beta</definition>
        <argsstring>() const</argsstring>
        <name>beta</name>
        <qualifiedname>tf::RandomPartitioner::beta</qualifiedname>
        <briefdescription>
<para>queries the <computeroutput>beta</computeroutput> value </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" line="432" column="9" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" bodystart="432" bodyend="432"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1RandomPartitioner_1a9904e269de43066b20f014d1ba85bbbe" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type><ref refid="cpp/utility/pair" kindref="compound" external="/Users/twhuang/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::pair</ref>&lt; size_t, size_t &gt;</type>
        <definition>std::pair&lt; size_t, size_t &gt; tf::RandomPartitioner::chunk_size_range</definition>
        <argsstring>(size_t N, size_t W) const</argsstring>
        <name>chunk_size_range</name>
        <qualifiedname>tf::RandomPartitioner::chunk_size_range</qualifiedname>
        <param>
          <type>size_t</type>
          <declname>N</declname>
        </param>
        <param>
          <type>size_t</type>
          <declname>W</declname>
        </param>
        <briefdescription>
<para>queries the range of chunk size </para>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>N</parametername>
</parameternamelist>
<parameterdescription>
<para>number of iterations </para>
</parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>W</parametername>
</parameternamelist>
<parameterdescription>
<para>number of workers </para>
</parameterdescription>
</parameteritem>
</parameterlist>
</para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" line="440" column="13" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" bodystart="440" bodyend="453"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="private-func">
      <memberdef kind="function" id="classtf_1_1RandomPartitioner_1a26eb18b6b1c5a0a35ea245ac7d0a647b" prot="private" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>typename F</type>
          </param>
          <param>
            <type>std::enable_if_t&lt; std::is_invocable_r_v&lt; void, F, size_t, size_t &gt;, void &gt; *</type>
            <defval>nullptr</defval>
          </param>
        </templateparamlist>
        <type>void</type>
        <definition>void tf::RandomPartitioner::loop</definition>
        <argsstring>(size_t N, size_t W, std::atomic&lt; size_t &gt; &amp;next, F &amp;&amp;func) const</argsstring>
        <name>loop</name>
        <qualifiedname>tf::RandomPartitioner::loop</qualifiedname>
        <param>
          <type>size_t</type>
          <declname>N</declname>
        </param>
        <param>
          <type>size_t</type>
          <declname>W</declname>
        </param>
        <param>
          <type><ref refid="cpp/atomic/atomic" kindref="compound" external="/Users/twhuang/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::atomic</ref>&lt; size_t &gt; &amp;</type>
          <declname>next</declname>
        </param>
        <param>
          <type>F &amp;&amp;</type>
          <declname>func</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" line="465" column="8" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" bodystart="465" bodyend="485"/>
      </memberdef>
      <memberdef kind="function" id="classtf_1_1RandomPartitioner_1affa4b2749b3adb08ca989421aff64132" prot="private" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>typename F</type>
          </param>
          <param>
            <type>std::enable_if_t&lt; std::is_invocable_r_v&lt; bool, F, size_t, size_t &gt;, void &gt; *</type>
            <defval>nullptr</defval>
          </param>
        </templateparamlist>
        <type>void</type>
        <definition>void tf::RandomPartitioner::loop_until</definition>
        <argsstring>(size_t N, size_t W, std::atomic&lt; size_t &gt; &amp;next, F &amp;&amp;func) const</argsstring>
        <name>loop_until</name>
        <qualifiedname>tf::RandomPartitioner::loop_until</qualifiedname>
        <param>
          <type>size_t</type>
          <declname>N</declname>
        </param>
        <param>
          <type>size_t</type>
          <declname>W</declname>
        </param>
        <param>
          <type><ref refid="cpp/atomic/atomic" kindref="compound" external="/Users/twhuang/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::atomic</ref>&lt; size_t &gt; &amp;</type>
          <declname>next</declname>
        </param>
        <param>
          <type>F &amp;&amp;</type>
          <declname>func</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" line="493" column="8" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" bodystart="493" bodyend="515"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>class to construct a random partitioner for scheduling parallel algorithms </para>
    </briefdescription>
    <detaileddescription>
<para>Similar to <ref refid="classtf_1_1DynamicPartitioner" kindref="compound">tf::DynamicPartitioner</ref>, the partitioner splits iterations into many partitions but each with a random chunk size in the range, <computeroutput>c = [alpha * N * W, beta * N * W]</computeroutput>. By default, <computeroutput>alpha</computeroutput> is <computeroutput>0.01</computeroutput> and <computeroutput>beta</computeroutput> is <computeroutput>0.5</computeroutput>, respectively. </para>
    </detaileddescription>
    <inheritancegraph>
      <node id="2">
        <label>tf::PartitionerBase</label>
        <link refid="classtf_1_1PartitionerBase"/>
      </node>
      <node id="1">
        <label>tf::RandomPartitioner</label>
        <link refid="classtf_1_1RandomPartitioner"/>
        <childnode refid="2" relation="public-inheritance">
        </childnode>
      </node>
    </inheritancegraph>
    <collaborationgraph>
      <node id="2">
        <label>tf::PartitionerBase</label>
        <link refid="classtf_1_1PartitionerBase"/>
      </node>
      <node id="1">
        <label>tf::RandomPartitioner</label>
        <link refid="classtf_1_1RandomPartitioner"/>
        <childnode refid="2" relation="public-inheritance">
        </childnode>
      </node>
    </collaborationgraph>
    <location file="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" line="405" column="1" bodyfile="/Users/twhuang/Code/taskflow/taskflow/algorithm/partitioner.hpp" bodystart="405" bodyend="522"/>
    <listofallmembers>
      <member refid="classtf_1_1RandomPartitioner_1a583827448d43322a6c282fa165b21a21" prot="private" virt="non-virtual"><scope>tf::RandomPartitioner</scope><name>_alpha</name></member>
      <member refid="classtf_1_1RandomPartitioner_1abaca67c5c1cc95d468cf7f894e78f240" prot="private" virt="non-virtual"><scope>tf::RandomPartitioner</scope><name>_beta</name></member>
      <member refid="classtf_1_1PartitionerBase_1a98a744284cfc726b1a597dae90e766f0" prot="protected" virt="non-virtual"><scope>tf::RandomPartitioner</scope><name>_chunk_size</name></member>
      <member refid="classtf_1_1RandomPartitioner_1a2ffefd05bda25e3ed25cedc4e7ff65eb" prot="public" virt="non-virtual"><scope>tf::RandomPartitioner</scope><name>alpha</name></member>
      <member refid="classtf_1_1RandomPartitioner_1a5d2f8decb307e255c52e5df1227f4825" prot="public" virt="non-virtual"><scope>tf::RandomPartitioner</scope><name>beta</name></member>
      <member refid="classtf_1_1PartitionerBase_1a8445b917fca6384861898d46b81ec471" prot="public" virt="non-virtual"><scope>tf::RandomPartitioner</scope><name>chunk_size</name></member>
      <member refid="classtf_1_1PartitionerBase_1ad3aadb6b50b86eb0a679f714f07079cf" prot="public" virt="non-virtual"><scope>tf::RandomPartitioner</scope><name>chunk_size</name></member>
      <member refid="classtf_1_1RandomPartitioner_1a9904e269de43066b20f014d1ba85bbbe" prot="public" virt="non-virtual"><scope>tf::RandomPartitioner</scope><name>chunk_size_range</name></member>
      <member refid="classtf_1_1RandomPartitioner_1a26eb18b6b1c5a0a35ea245ac7d0a647b" prot="private" virt="non-virtual"><scope>tf::RandomPartitioner</scope><name>loop</name></member>
      <member refid="classtf_1_1RandomPartitioner_1affa4b2749b3adb08ca989421aff64132" prot="private" virt="non-virtual"><scope>tf::RandomPartitioner</scope><name>loop_until</name></member>
      <member refid="classtf_1_1PartitionerBase_1a9dae31a2e61d1d64a913bd1d12cfcb20" prot="public" virt="non-virtual"><scope>tf::RandomPartitioner</scope><name>PartitionerBase</name></member>
      <member refid="classtf_1_1PartitionerBase_1a75ad9b40415d767ef368c20650958be0" prot="public" virt="non-virtual"><scope>tf::RandomPartitioner</scope><name>PartitionerBase</name></member>
      <member refid="classtf_1_1RandomPartitioner_1af8a23f5bad60d742c4d9ede4421e2fab" prot="public" virt="non-virtual"><scope>tf::RandomPartitioner</scope><name>RandomPartitioner</name></member>
      <member refid="classtf_1_1RandomPartitioner_1a07113b4c4839437228dfffd0f4c2997a" prot="public" virt="non-virtual"><scope>tf::RandomPartitioner</scope><name>RandomPartitioner</name></member>
      <member refid="classtf_1_1RandomPartitioner_1a3bb5314f320c70e7d947c1deda46858b" prot="public" virt="non-virtual"><scope>tf::RandomPartitioner</scope><name>RandomPartitioner</name></member>
    </listofallmembers>
  </compounddef>
</doxygen>
