Skip to content

Commit 583559b

Browse files
committed
Change command_graph_generator::assigned_chunk to work on box instead of chunk
1 parent aa6c8b8 commit 583559b

2 files changed

Lines changed: 11 additions & 12 deletions

File tree

include/command_graph_generator.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ class command_graph_generator {
217217

218218
struct assigned_chunk {
219219
node_id executed_on = -1;
220-
chunk<3> chnk;
220+
box<3> chnk;
221221
};
222222

223223
struct buffer_requirements {
@@ -239,7 +239,7 @@ class command_graph_generator {
239239

240240
std::vector<assigned_chunk> split_task_and_assign_chunks(const task& tsk) const;
241241

242-
buffer_requirements_list get_buffer_requirements_for_mapped_access(const task& tsk, const subrange<3>& sr) const;
242+
buffer_requirements_list get_buffer_requirements_for_mapped_access(const task& tsk, const box<3>& box) const;
243243

244244
assigned_chunks_with_requirements compute_per_chunk_requirements(const task& tsk, const std::vector<assigned_chunk>& chunks) const;
245245

src/command_graph_generator.cc

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include <cassert>
1818
#include <cstddef>
1919
#include <memory>
20+
#include <ranges>
2021
#include <tuple>
2122
#include <unordered_set>
2223
#include <utility>
@@ -171,17 +172,16 @@ std::vector<command_graph_generator::assigned_chunk> command_graph_generator::sp
171172
std::vector<assigned_chunk> assigned_chunks;
172173
for(size_t i = 0; i < chunks.size(); ++i) {
173174
const node_id nid = (i / chunks_per_node) % m_num_nodes;
174-
assigned_chunks.push_back({nid, chunk<3>(chunks[i].get_min(), chunks[i].get_range(), tsk.get_global_size())});
175+
assigned_chunks.push_back({nid, chunks[i]});
175176
}
176177
return assigned_chunks;
177178
}
178179

179-
command_graph_generator::buffer_requirements_list command_graph_generator::get_buffer_requirements_for_mapped_access(
180-
const task& tsk, const subrange<3>& sr) const {
180+
command_graph_generator::buffer_requirements_list command_graph_generator::get_buffer_requirements_for_mapped_access(const task& tsk, const box<3>& box) const {
181181
buffer_requirements_list result;
182182
const auto& access_map = tsk.get_buffer_access_map();
183183
for(const buffer_id bid : access_map.get_accessed_buffers()) {
184-
result.push_back(buffer_requirements{bid, access_map.compute_consumed_region(bid, box<3>(sr)), access_map.compute_produced_region(bid, box<3>(sr))});
184+
result.push_back(buffer_requirements{bid, access_map.compute_consumed_region(bid, box), access_map.compute_produced_region(bid, box)});
185185
}
186186
return result;
187187
}
@@ -283,7 +283,7 @@ void command_graph_generator::resolve_pending_reductions(
283283
// as oversubscription is handled by the instruction graph).
284284
// NOTE: The participating_nodes.count() check below relies on this being true
285285
assert(chunks_with_requirements.local_chunks.size() <= 1);
286-
for(const auto& [a_chunk, requirements] : chunks_with_requirements.local_chunks) {
286+
for(const auto& [_, requirements] : chunks_with_requirements.local_chunks) {
287287
if(std::none_of(requirements.begin(), requirements.end(), [&](const buffer_requirements& br) { return br.bid == bid && !br.consumed.empty(); })) {
288288
// This chunk doesn't read from the buffer
289289
continue;
@@ -390,7 +390,7 @@ void command_graph_generator::generate_pushes(batch& current_batch, const task&
390390

391391
// TODO: We currently generate an await push command for each local chunk, whereas we only generate a single push command for all remote chunks
392392
void command_graph_generator::generate_await_pushes(batch& current_batch, const task& tsk, const assigned_chunks_with_requirements& chunks_with_requirements) {
393-
for(auto& [a_chunk, requirements] : chunks_with_requirements.local_chunks) {
393+
for(auto& [_, requirements] : chunks_with_requirements.local_chunks) {
394394
for(auto& [bid, consumed, _] : requirements) {
395395
if(consumed.empty()) continue;
396396
auto& buffer = m_buffers.at(bid);
@@ -462,7 +462,7 @@ void command_graph_generator::generate_distributed_commands(batch& current_batch
462462
if(m_policy.overlapping_write_error != error_policy::ignore) {
463463
box_vector<3> local_chunks;
464464
for(const auto& [a_chunk, _] : chunks_with_requirements.local_chunks) {
465-
local_chunks.push_back(box<3>{a_chunk.chnk});
465+
local_chunks.push_back(a_chunk.chnk);
466466
}
467467
report_overlapping_writes(tsk, local_chunks);
468468
}
@@ -488,7 +488,7 @@ void command_graph_generator::generate_distributed_commands(batch& current_batch
488488
// we have to include it in exactly one of the per-node intermediate reductions.
489489
const bool is_reduction_initializer = std::any_of(tsk.get_reductions().begin(), tsk.get_reductions().end(),
490490
[&](const auto& reduction) { return m_local_nid == reduction_initializer_nid && reduction.init_from_buffer; });
491-
cmd = create_command<execution_command>(current_batch, &tsk, subrange{a_chunk.chnk}, is_reduction_initializer,
491+
cmd = create_command<execution_command>(current_batch, &tsk, a_chunk.chnk.get_subrange(), is_reduction_initializer,
492492
[&](const auto& record_debug_info) { record_debug_info(tsk, [this](const buffer_id bid) { return m_buffers.at(bid).debug_name; }); });
493493
}
494494

@@ -539,8 +539,7 @@ void command_graph_generator::generate_distributed_commands(batch& current_batch
539539
if(const auto uninitialized_reads = region_difference(consumed, buffer.initialized_region); !uninitialized_reads.empty()) {
540540
utils::report_error(m_policy.uninitialized_read_error,
541541
"Command C{} on N{}, which executes {} of {}, reads {} {}, which has not been written by any node.", cmd->get_id(), m_local_nid,
542-
box(subrange(a_chunk.chnk.offset, a_chunk.chnk.range)), print_task_debug_label(tsk), print_buffer_debug_label(bid),
543-
uninitialized_reads);
542+
a_chunk.chnk, print_task_debug_label(tsk), print_buffer_debug_label(bid), uninitialized_reads);
544543
}
545544
}
546545
}

0 commit comments

Comments
 (0)