Skip to content

Commit b45ae23

Browse files
committed
Add mergeChunksFromSameSourceID
1 parent 06a6aee commit b45ae23

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

include/openPMD/ChunkInfo.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@ namespace chunk_assignment
9494
template <typename Chunk_t>
9595
void mergeChunks(std::vector<Chunk_t> &);
9696

97+
auto mergeChunksFromSameSourceID(std::vector<WrittenChunkInfo> const &)
98+
-> std::map<unsigned int, std::vector<ChunkInfo>>;
99+
97100
struct PartialAssignment
98101
{
99102
ChunkTable notAssigned;

src/ChunkInfo.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,21 @@ namespace chunk_assignment
174174
} while (stillChanging);
175175
}
176176

177+
auto mergeChunksFromSameSourceID(std::vector<WrittenChunkInfo> const &table)
178+
-> std::map<unsigned int, std::vector<ChunkInfo>>
179+
{
180+
std::map<unsigned int, std::vector<ChunkInfo>> sortedBySourceID;
181+
for (auto const &chunk : table)
182+
{
183+
sortedBySourceID[chunk.sourceID].emplace_back(chunk);
184+
}
185+
for (auto &pair : sortedBySourceID)
186+
{
187+
mergeChunks(pair.second);
188+
}
189+
return sortedBySourceID;
190+
}
191+
177192
template void mergeChunks<ChunkInfo>(std::vector<ChunkInfo> &);
178193
template void
179194
mergeChunks<WrittenChunkInfo>(std::vector<WrittenChunkInfo> &);

src/binding/python/ChunkInfo.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,10 @@ void init_Chunk(py::module &m)
237237
.def("available", &host_info::methodAvailable);
238238

239239
py::bind_vector<ChunkTable>(m, "ChunkTable")
240-
.def("merge_chunks", &chunk_assignment::mergeChunks<WrittenChunkInfo>);
240+
.def("merge_chunks", &chunk_assignment::mergeChunks<WrittenChunkInfo>)
241+
.def(
242+
"merge_chunks_from_same_sourceID",
243+
&chunk_assignment::mergeChunksFromSameSourceID);
241244

242245
using namespace chunk_assignment;
243246

0 commit comments

Comments
 (0)