@@ -80,6 +80,7 @@ struct WrittenChunkInfo : ChunkInfo
8080 operator ==( WrittenChunkInfo const & other ) const ;
8181};
8282
83+ // !< @todo Also add a ChunkTable for ReadChunkInfo or sth like that
8384using ChunkTable = std::vector< WrittenChunkInfo >;
8485
8586namespace chunk_assignment
@@ -108,6 +109,10 @@ namespace chunk_assignment
108109 */
109110 struct Strategy
110111 {
112+ ChunkTable assign (
113+ ChunkTable,
114+ RankMeta const & rankMetaIn,
115+ RankMeta const & rankMetaOut );
111116 /* *
112117 * @brief Assign chunks to be loaded to reading processes.
113118 *
@@ -141,6 +146,8 @@ namespace chunk_assignment
141146 */
142147 struct PartialStrategy
143148 {
149+ PartialAssignment
150+ assign ( ChunkTable table, RankMeta const & in, RankMeta const & out );
144151 /* *
145152 * @brief Assign chunks to be loaded to reading processes.
146153 *
@@ -164,19 +171,6 @@ namespace chunk_assignment
164171 virtual ~PartialStrategy () = default ;
165172 };
166173
167- ChunkTable
168- assignChunks (
169- ChunkTable,
170- RankMeta const & rankMetaIn,
171- RankMeta const & rankMetaOut,
172- Strategy & strategy );
173-
174- PartialAssignment assignChunks (
175- ChunkTable,
176- RankMeta const & rankMetaIn,
177- RankMeta const & rankMetaOut,
178- PartialStrategy & strategy );
179-
180174 /* *
181175 * @brief Combine a PartialStrategy and a Strategy to obtain a Strategy
182176 * working in two phases.
@@ -195,14 +189,12 @@ namespace chunk_assignment
195189 std::unique_ptr< PartialStrategy > firstPass,
196190 std::unique_ptr< Strategy > secondPass );
197191
198- virtual ChunkTable
199- assign ( PartialAssignment, RankMeta const & in, RankMeta const & out );
192+ virtual ChunkTable assign (
193+ PartialAssignment,
194+ RankMeta const & in,
195+ RankMeta const & out ) override ;
200196
201- virtual std::unique_ptr< Strategy > clone () const override
202- {
203- return std::unique_ptr< Strategy >( new FromPartialStrategy (
204- m_firstPass->clone (), m_secondPass->clone () ) );
205- }
197+ virtual std::unique_ptr< Strategy > clone () const override ;
206198
207199 private:
208200 std::unique_ptr< PartialStrategy > m_firstPass;
@@ -216,13 +208,12 @@ namespace chunk_assignment
216208 */
217209 struct RoundRobin : Strategy
218210 {
219- ChunkTable
220- assign ( PartialAssignment, RankMeta const & in, RankMeta const & out );
211+ ChunkTable assign (
212+ PartialAssignment,
213+ RankMeta const & in,
214+ RankMeta const & out ) override ;
221215
222- virtual std::unique_ptr< Strategy > clone () const override
223- {
224- return std::unique_ptr< Strategy >( new RoundRobin );
225- }
216+ virtual std::unique_ptr< Strategy > clone () const override ;
226217 };
227218
228219 /* *
@@ -237,15 +228,12 @@ namespace chunk_assignment
237228 {
238229 ByHostname ( std::unique_ptr< Strategy > withinNode );
239230
240- PartialAssignment
241- assign ( PartialAssignment, RankMeta const & in, RankMeta const & out )
242- override ;
231+ PartialAssignment assign (
232+ PartialAssignment,
233+ RankMeta const & in,
234+ RankMeta const & out ) override ;
243235
244- virtual std::unique_ptr< PartialStrategy > clone () const override
245- {
246- return std::unique_ptr< PartialStrategy >(
247- new ByHostname ( m_withinNode->clone () ) );
248- }
236+ virtual std::unique_ptr< PartialStrategy > clone () const override ;
249237
250238 private:
251239 std::unique_ptr< Strategy > m_withinNode;
@@ -274,11 +262,7 @@ namespace chunk_assignment
274262 RankMeta const & in,
275263 RankMeta const & out ) override ;
276264
277- virtual std::unique_ptr< Strategy > clone () const override
278- {
279- return std::unique_ptr< Strategy >( new ByCuboidSlice (
280- blockSlicer->clone (), totalExtent, mpi_rank, mpi_size ) );
281- }
265+ virtual std::unique_ptr< Strategy > clone () const override ;
282266
283267 private:
284268 std::unique_ptr< BlockSlicer > blockSlicer;
@@ -313,13 +297,9 @@ namespace chunk_assignment
313297 RankMeta const & in,
314298 RankMeta const & out ) override ;
315299
316- virtual std::unique_ptr< Strategy > clone () const override
317- {
318- return std::unique_ptr< Strategy >(
319- new BinPacking ( splitAlongDimension ) );
320- }
300+ virtual std::unique_ptr< Strategy > clone () const override ;
321301 };
322- } // namespace chunk_assignment
302+ } // namespace chunk_assignment
323303
324304namespace host_info
325305{
0 commit comments