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
392392void 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