forked from taskflow/taskflow
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclasstf_1_1PartitionerBase.xml
More file actions
347 lines (347 loc) · 22.7 KB
/
Copy pathclasstf_1_1PartitionerBase.xml
File metadata and controls
347 lines (347 loc) · 22.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
<?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.12.0" xml:lang="en-US">
<compounddef id="classtf_1_1PartitionerBase" kind="class" language="C++" prot="public">
<compoundname>tf::PartitionerBase</compoundname>
<basecompoundref prot="public" virt="non-virtual">tf::IsPartitioner</basecompoundref>
<includes refid="partitioner_8hpp" local="no">taskflow/algorithm/partitioner.hpp</includes>
<templateparamlist>
<param>
<type>typename C</type>
<defval><ref refid="structtf_1_1DefaultClosureWrapper" kindref="compound">DefaultClosureWrapper</ref></defval>
</param>
</templateparamlist>
<sectiondef kind="public-type">
<memberdef kind="typedef" id="classtf_1_1PartitionerBase_1a2b6152f24c2a3d6e750349d02ecb4595" prot="public" static="no">
<type>C</type>
<definition>using tf::PartitionerBase< C >::closure_wrapper_type = C</definition>
<argsstring></argsstring>
<name>closure_wrapper_type</name>
<qualifiedname>tf::PartitionerBase::closure_wrapper_type</qualifiedname>
<briefdescription>
<para>the closure type </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="taskflow/algorithm/partitioner.hpp" line="142" column="3" bodyfile="taskflow/algorithm/partitioner.hpp" bodystart="142" bodyend="-1"/>
</memberdef>
</sectiondef>
<sectiondef kind="public-static-attrib">
<memberdef kind="variable" id="classtf_1_1PartitionerBase_1a196131eb17e7163f5fa8d9271d7aa701" prot="public" static="yes" constexpr="yes" mutable="no">
<type>bool</type>
<definition>bool tf::PartitionerBase< C >::is_default_wrapper_v</definition>
<argsstring></argsstring>
<name>is_default_wrapper_v</name>
<qualifiedname>tf::PartitionerBase::is_default_wrapper_v</qualifiedname>
<initializer>= std::is_same_v<C, <ref refid="structtf_1_1DefaultClosureWrapper" kindref="compound">DefaultClosureWrapper</ref>></initializer>
<briefdescription>
<para>indicating if the given closure wrapper is a default wrapper (i.e., empty) </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="taskflow/algorithm/partitioner.hpp" line="137" column="25" bodyfile="taskflow/algorithm/partitioner.hpp" bodystart="137" bodyend="-1"/>
</memberdef>
</sectiondef>
<sectiondef kind="protected-attrib">
<memberdef kind="variable" id="classtf_1_1PartitionerBase_1a9ff56f7150ee4ff42b5006942f9c4b52" prot="protected" static="no" mutable="no">
<type>size_t</type>
<definition>size_t tf::PartitionerBase< C >::_chunk_size</definition>
<argsstring></argsstring>
<name>_chunk_size</name>
<qualifiedname>tf::PartitionerBase::_chunk_size</qualifiedname>
<initializer>{0}</initializer>
<briefdescription>
<para>chunk size </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="taskflow/algorithm/partitioner.hpp" line="207" column="10" bodyfile="taskflow/algorithm/partitioner.hpp" bodystart="207" bodyend="207"/>
</memberdef>
<memberdef kind="variable" id="classtf_1_1PartitionerBase_1a9c5a8d350a913bea4c63d350e2bc9d1b" prot="protected" static="no" mutable="no">
<type>C</type>
<definition>C tf::PartitionerBase< C >::_closure_wrapper</definition>
<argsstring></argsstring>
<name>_closure_wrapper</name>
<qualifiedname>tf::PartitionerBase::_closure_wrapper</qualifiedname>
<briefdescription>
<para>closure wrapper </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="taskflow/algorithm/partitioner.hpp" line="212" column="5" bodyfile="taskflow/algorithm/partitioner.hpp" bodystart="212" bodyend="-1"/>
</memberdef>
</sectiondef>
<sectiondef kind="public-func">
<memberdef kind="function" id="classtf_1_1PartitionerBase_1ad0037e70726a054527a923821ec2d95a" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
<type></type>
<definition>tf::PartitionerBase< C >::PartitionerBase</definition>
<argsstring>()=default</argsstring>
<name>PartitionerBase</name>
<qualifiedname>tf::PartitionerBase::PartitionerBase</qualifiedname>
<briefdescription>
<para>default constructor </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="taskflow/algorithm/partitioner.hpp" line="147" column="3"/>
</memberdef>
<memberdef kind="function" id="classtf_1_1PartitionerBase_1a099464a339e09d9f6e4a59bec425c53a" prot="public" static="no" const="no" explicit="yes" inline="yes" virt="non-virtual">
<type></type>
<definition>tf::PartitionerBase< C >::PartitionerBase</definition>
<argsstring>(size_t chunk_size)</argsstring>
<name>PartitionerBase</name>
<qualifiedname>tf::PartitionerBase::PartitionerBase</qualifiedname>
<param>
<type>size_t</type>
<declname>chunk_size</declname>
</param>
<briefdescription>
<para>construct a partitioner with the given chunk size </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="taskflow/algorithm/partitioner.hpp" line="152" column="12" bodyfile="taskflow/algorithm/partitioner.hpp" bodystart="152" bodyend="152"/>
</memberdef>
<memberdef kind="function" id="classtf_1_1PartitionerBase_1a9cf9f5400992c6d9bd4131b5af2b9e8e" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
<type></type>
<definition>tf::PartitionerBase< C >::PartitionerBase</definition>
<argsstring>(size_t chunk_size, C &&closure_wrapper)</argsstring>
<name>PartitionerBase</name>
<qualifiedname>tf::PartitionerBase::PartitionerBase</qualifiedname>
<param>
<type>size_t</type>
<declname>chunk_size</declname>
</param>
<param>
<type>C &&</type>
<declname>closure_wrapper</declname>
</param>
<briefdescription>
<para>construct a partitioner with the given chunk size and closure wrapper </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="taskflow/algorithm/partitioner.hpp" line="157" column="3" bodyfile="taskflow/algorithm/partitioner.hpp" bodystart="157" bodyend="160"/>
</memberdef>
<memberdef kind="function" id="classtf_1_1PartitionerBase_1afa34299dea355738efa5684024d08215" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
<type>size_t</type>
<definition>size_t tf::PartitionerBase< C >::chunk_size</definition>
<argsstring>() const</argsstring>
<name>chunk_size</name>
<qualifiedname>tf::PartitionerBase::chunk_size</qualifiedname>
<briefdescription>
<para>query the chunk size of this partitioner </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="taskflow/algorithm/partitioner.hpp" line="165" column="10" bodyfile="taskflow/algorithm/partitioner.hpp" bodystart="165" bodyend="165"/>
</memberdef>
<memberdef kind="function" id="classtf_1_1PartitionerBase_1a481097aeb7ec62dcc23584eaa48cbce4" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
<type>void</type>
<definition>void tf::PartitionerBase< C >::chunk_size</definition>
<argsstring>(size_t cz)</argsstring>
<name>chunk_size</name>
<qualifiedname>tf::PartitionerBase::chunk_size</qualifiedname>
<param>
<type>size_t</type>
<declname>cz</declname>
</param>
<briefdescription>
<para>update the chunk size of this partitioner </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="taskflow/algorithm/partitioner.hpp" line="170" column="8" bodyfile="taskflow/algorithm/partitioner.hpp" bodystart="170" bodyend="170"/>
</memberdef>
<memberdef kind="function" id="classtf_1_1PartitionerBase_1a56cd2cc038e67d21e6676ab81fa3a8ad" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
<type>const C &</type>
<definition>const C & tf::PartitionerBase< C >::closure_wrapper</definition>
<argsstring>() const</argsstring>
<name>closure_wrapper</name>
<qualifiedname>tf::PartitionerBase::closure_wrapper</qualifiedname>
<briefdescription>
<para>acquire an immutable access to the closure wrapper object </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="taskflow/algorithm/partitioner.hpp" line="175" column="11" bodyfile="taskflow/algorithm/partitioner.hpp" bodystart="175" bodyend="175"/>
</memberdef>
<memberdef kind="function" id="classtf_1_1PartitionerBase_1ab6397b18772820fafe6a613f906976ce" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
<type>C &</type>
<definition>C & tf::PartitionerBase< C >::closure_wrapper</definition>
<argsstring>()</argsstring>
<name>closure_wrapper</name>
<qualifiedname>tf::PartitionerBase::closure_wrapper</qualifiedname>
<briefdescription>
<para>acquire a mutable access to the closure wrapper object </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="taskflow/algorithm/partitioner.hpp" line="180" column="5" bodyfile="taskflow/algorithm/partitioner.hpp" bodystart="180" bodyend="180"/>
</memberdef>
<memberdef kind="function" id="classtf_1_1PartitionerBase_1a99e23ce7c0faf3a932ab2b7ac51e58f4" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
<templateparamlist>
<param>
<type>typename F</type>
</param>
</templateparamlist>
<type>void</type>
<definition>void tf::PartitionerBase< C >::closure_wrapper</definition>
<argsstring>(F &&fn)</argsstring>
<name>closure_wrapper</name>
<qualifiedname>tf::PartitionerBase::closure_wrapper</qualifiedname>
<param>
<type>F &&</type>
<declname>fn</declname>
</param>
<briefdescription>
<para>modify the closure wrapper object </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="taskflow/algorithm/partitioner.hpp" line="186" column="8" bodyfile="taskflow/algorithm/partitioner.hpp" bodystart="186" bodyend="186"/>
</memberdef>
<memberdef kind="function" id="classtf_1_1PartitionerBase_1a27c56bac76df639c7bf30e6213c47776" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
<templateparamlist>
<param>
<type>typename F</type>
</param>
</templateparamlist>
<type>TF_FORCE_INLINE decltype(auto)</type>
<definition>TF_FORCE_INLINE decltype(auto) tf::PartitionerBase< C >::operator()</definition>
<argsstring>(F &&callable)</argsstring>
<name>operator()</name>
<qualifiedname>tf::PartitionerBase::operator()</qualifiedname>
<param>
<type>F &&</type>
<declname>callable</declname>
</param>
<briefdescription>
<para>wraps the given callable with the associated closure wrapper </para>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="taskflow/algorithm/partitioner.hpp" line="192" column="28" bodyfile="taskflow/algorithm/partitioner.hpp" bodystart="192" bodyend="200"/>
</memberdef>
</sectiondef>
<briefdescription>
<para>class to derive a partitioner for scheduling parallel algorithms </para>
</briefdescription>
<detaileddescription>
<para><parameterlist kind="templateparam"><parameteritem>
<parameternamelist>
<parametername>C</parametername>
</parameternamelist>
<parameterdescription>
<para>closure wrapper type</para>
</parameterdescription>
</parameteritem>
</parameterlist>
The class provides base methods to derive a partitioner that can be used to schedule parallel iterations (e.g., <ref refid="classtf_1_1FlowBuilder_1aae3edfa278baa75b08414e083c14c836" kindref="member">tf::Taskflow::for_each</ref>).</para>
<para>An partitioner defines the scheduling method for running parallel algorithms, such <ref refid="classtf_1_1FlowBuilder_1aae3edfa278baa75b08414e083c14c836" kindref="member">tf::Taskflow::for_each</ref>, <ref refid="classtf_1_1FlowBuilder_1afb24798ebf46e253a40b01bffb1da6a7" kindref="member">tf::Taskflow::reduce</ref>, and so on. By default, we provide the following partitioners:</para>
<para><itemizedlist>
<listitem><para><ref refid="classtf_1_1GuidedPartitioner" kindref="compound">tf::GuidedPartitioner</ref> to enable guided scheduling algorithm of adaptive chunk size</para>
</listitem><listitem><para><ref refid="classtf_1_1DynamicPartitioner" kindref="compound">tf::DynamicPartitioner</ref> to enable dynamic scheduling algorithm of equal chunk size</para>
</listitem><listitem><para><ref refid="classtf_1_1StaticPartitioner" kindref="compound">tf::StaticPartitioner</ref> to enable static scheduling algorithm of static chunk size</para>
</listitem><listitem><para><ref refid="classtf_1_1RandomPartitioner" kindref="compound">tf::RandomPartitioner</ref> to enable random scheduling algorithm of random chunk size</para>
</listitem></itemizedlist>
</para>
<para>Depending on applications, partitioning algorithms can impact the performance a lot. For example, if a parallel-iteration workload contains a regular work unit per iteration, <ref refid="classtf_1_1StaticPartitioner" kindref="compound">tf::StaticPartitioner</ref> can deliver the best performance. On the other hand, if the work unit per iteration is irregular and unbalanced, <ref refid="classtf_1_1GuidedPartitioner" kindref="compound">tf::GuidedPartitioner</ref> or <ref refid="classtf_1_1DynamicPartitioner" kindref="compound">tf::DynamicPartitioner</ref> can outperform <ref refid="classtf_1_1StaticPartitioner" kindref="compound">tf::StaticPartitioner</ref>. In most situations, <ref refid="classtf_1_1GuidedPartitioner" kindref="compound">tf::GuidedPartitioner</ref> can deliver decent performance and is thus used as our default partitioner.</para>
<para><simplesect kind="attention"><para>Giving the partition size of 0 lets the Taskflow runtime automatically determines the partition size for the given partitioner.</para>
</simplesect>
In addition to partition size, the application can specify a closure wrapper for a partitioner. A closure wrapper allows the application to wrapper a partitioned task (i.e., closure) with a custom function object that performs additional tasks. For example:</para>
<para><programlisting filename=".cpp"><codeline><highlight class="normal"><ref refid="cpp/atomic/atomic" kindref="compound" external="/Users/twhuang/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">std::atomic<int></ref><sp/><ref refid="cpp/algorithm/count" kindref="compound" external="/Users/twhuang/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">count</ref><sp/>=<sp/>0;</highlight></codeline>
<codeline><highlight class="normal"><ref refid="classtf_1_1Taskflow" kindref="compound">tf::Taskflow</ref><sp/>taskflow;</highlight></codeline>
<codeline><highlight class="normal">taskflow.<ref refid="classtf_1_1FlowBuilder_1a3b132bd902331a11b04b4ad66cf8bf77" kindref="member">for_each_index</ref>(0,<sp/>100,<sp/>1,<sp/></highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/>[](){<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/><sp/><sp/><ref refid="cpp/io/c/fprintf" kindref="compound" external="/Users/twhuang/Code/taskflow/doxygen/cppreference-doxygen-web.tag.xml">printf</ref>(</highlight><highlight class="stringliteral">"%d\n"</highlight><highlight class="normal">,<sp/>i);<sp/></highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/>},</highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/><ref refid="classtf_1_1StaticPartitioner" kindref="compound">tf::StaticPartitioner</ref>(0,<sp/>[](</highlight><highlight class="keyword">auto</highlight><highlight class="normal">&&<sp/>closure){</highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>do<sp/>something<sp/>before<sp/>invoking<sp/>the<sp/>partitioned<sp/>task</highlight><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>...</highlight><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>invoke<sp/>the<sp/>partitioned<sp/>task</highlight><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/><sp/><sp/>closure();</highlight></codeline>
<codeline><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>do<sp/>something<sp/>else<sp/>after<sp/>invoking<sp/>the<sp/>partitioned<sp/>task</highlight><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>...</highlight><highlight class="normal"></highlight></codeline>
<codeline><highlight class="normal"><sp/><sp/>}</highlight></codeline>
<codeline><highlight class="normal">);</highlight></codeline>
<codeline><highlight class="normal">executor.run(taskflow).wait();</highlight></codeline>
</programlisting></para>
<para><simplesect kind="attention"><para>The default closure wrapper (<ref refid="structtf_1_1DefaultClosureWrapper" kindref="compound">tf::DefaultClosureWrapper</ref>) does nothing but invoke the partitioned task (closure). </para>
</simplesect>
</para>
</detaileddescription>
<inheritancegraph>
<node id="2">
<label>tf::IsPartitioner</label>
</node>
<node id="1">
<label>tf::PartitionerBase< C ></label>
<link refid="classtf_1_1PartitionerBase"/>
<childnode refid="2" relation="public-inheritance">
</childnode>
</node>
</inheritancegraph>
<collaborationgraph>
<node id="3">
<label>tf::DefaultClosureWrapper</label>
<link refid="structtf_1_1DefaultClosureWrapper"/>
</node>
<node id="2">
<label>tf::IsPartitioner</label>
</node>
<node id="1">
<label>tf::PartitionerBase< C ></label>
<link refid="classtf_1_1PartitionerBase"/>
<childnode refid="2" relation="public-inheritance">
</childnode>
<childnode refid="3" relation="usage">
<edgelabel>_closure_wrapper</edgelabel>
</childnode>
</node>
</collaborationgraph>
<location file="taskflow/algorithm/partitioner.hpp" line="130" column="1" bodyfile="taskflow/algorithm/partitioner.hpp" bodystart="130" bodyend="213"/>
<listofallmembers>
<member refid="classtf_1_1PartitionerBase_1a9ff56f7150ee4ff42b5006942f9c4b52" prot="protected" virt="non-virtual"><scope>tf::PartitionerBase</scope><name>_chunk_size</name></member>
<member refid="classtf_1_1PartitionerBase_1a9c5a8d350a913bea4c63d350e2bc9d1b" prot="protected" virt="non-virtual"><scope>tf::PartitionerBase</scope><name>_closure_wrapper</name></member>
<member refid="classtf_1_1PartitionerBase_1afa34299dea355738efa5684024d08215" prot="public" virt="non-virtual"><scope>tf::PartitionerBase</scope><name>chunk_size</name></member>
<member refid="classtf_1_1PartitionerBase_1a481097aeb7ec62dcc23584eaa48cbce4" prot="public" virt="non-virtual"><scope>tf::PartitionerBase</scope><name>chunk_size</name></member>
<member refid="classtf_1_1PartitionerBase_1a56cd2cc038e67d21e6676ab81fa3a8ad" prot="public" virt="non-virtual"><scope>tf::PartitionerBase</scope><name>closure_wrapper</name></member>
<member refid="classtf_1_1PartitionerBase_1ab6397b18772820fafe6a613f906976ce" prot="public" virt="non-virtual"><scope>tf::PartitionerBase</scope><name>closure_wrapper</name></member>
<member refid="classtf_1_1PartitionerBase_1a99e23ce7c0faf3a932ab2b7ac51e58f4" prot="public" virt="non-virtual"><scope>tf::PartitionerBase</scope><name>closure_wrapper</name></member>
<member refid="classtf_1_1PartitionerBase_1a2b6152f24c2a3d6e750349d02ecb4595" prot="public" virt="non-virtual"><scope>tf::PartitionerBase</scope><name>closure_wrapper_type</name></member>
<member refid="classtf_1_1PartitionerBase_1a196131eb17e7163f5fa8d9271d7aa701" prot="public" virt="non-virtual"><scope>tf::PartitionerBase</scope><name>is_default_wrapper_v</name></member>
<member refid="classtf_1_1PartitionerBase_1a27c56bac76df639c7bf30e6213c47776" prot="public" virt="non-virtual"><scope>tf::PartitionerBase</scope><name>operator()</name></member>
<member refid="classtf_1_1PartitionerBase_1ad0037e70726a054527a923821ec2d95a" prot="public" virt="non-virtual"><scope>tf::PartitionerBase</scope><name>PartitionerBase</name></member>
<member refid="classtf_1_1PartitionerBase_1a099464a339e09d9f6e4a59bec425c53a" prot="public" virt="non-virtual"><scope>tf::PartitionerBase</scope><name>PartitionerBase</name></member>
<member refid="classtf_1_1PartitionerBase_1a9cf9f5400992c6d9bd4131b5af2b9e8e" prot="public" virt="non-virtual"><scope>tf::PartitionerBase</scope><name>PartitionerBase</name></member>
</listofallmembers>
</compounddef>
</doxygen>