SDK: counter collection serialization per device (#1157)
Migrates profiler_serializer class in QueueController to have an instance per-agent instead of one globally. Other changes in this commit are to allow for maps of the queues associated with each agent to be passed to profiler_serializer when it is turned on/off. Existing test cases cover whether or not the kernels are serialized (multistream app). New test case added to show that this serialization only occurs on a per device level with a kernel launched on one device waiting for a value to be set on the other.
This commit is contained in:
@@ -192,8 +192,14 @@ TEST(hsa_barrier, no_block_single)
|
||||
auto queues = create_queue_map(1);
|
||||
|
||||
// Immediate return of barrier due to no active async packets
|
||||
hsa::hsa_barrier barrier(finished_func, get_api_table());
|
||||
barrier.set_barrier(queues);
|
||||
hsa::hsa_barrier barrier(finished_func, get_api_table());
|
||||
hsa_barrier::queue_map_ptr_t q_map;
|
||||
for(const auto& [k, v] : queues)
|
||||
{
|
||||
q_map[k] = v.get();
|
||||
}
|
||||
|
||||
barrier.set_barrier(q_map);
|
||||
executed_handlers = 0;
|
||||
ASSERT_TRUE(barrier.complete());
|
||||
should_execute_handler = true;
|
||||
@@ -224,7 +230,14 @@ TEST(hsa_barrier, no_block_multi)
|
||||
|
||||
// Immediate return of barrier due to no active async packets
|
||||
hsa::hsa_barrier barrier(finished_func, get_api_table());
|
||||
barrier.set_barrier(queues);
|
||||
|
||||
hsa_barrier::queue_map_ptr_t q_map;
|
||||
for(const auto& [k, v] : queues)
|
||||
{
|
||||
q_map[k] = v.get();
|
||||
}
|
||||
|
||||
barrier.set_barrier(q_map);
|
||||
ASSERT_TRUE(barrier.complete());
|
||||
should_execute_handler = true;
|
||||
executed_handlers = 0;
|
||||
@@ -265,7 +278,13 @@ TEST(hsa_barrier, block_single)
|
||||
should_execute_handler = false;
|
||||
executed_handlers = 0;
|
||||
|
||||
barrier.set_barrier(queues);
|
||||
hsa_barrier::queue_map_ptr_t q_map;
|
||||
for(const auto& [k, v] : queues)
|
||||
{
|
||||
q_map[k] = v.get();
|
||||
}
|
||||
|
||||
barrier.set_barrier(q_map);
|
||||
ASSERT_FALSE(barrier.complete());
|
||||
|
||||
should_execute_handler = false;
|
||||
@@ -323,7 +342,13 @@ TEST(hsa_barrier, block_multi)
|
||||
should_execute_handler = false;
|
||||
executed_handlers = 0;
|
||||
|
||||
barrier.set_barrier(queues);
|
||||
hsa_barrier::queue_map_ptr_t q_map;
|
||||
for(const auto& [k, v] : queues)
|
||||
{
|
||||
q_map[k] = v.get();
|
||||
}
|
||||
|
||||
barrier.set_barrier(q_map);
|
||||
ASSERT_FALSE(barrier.complete());
|
||||
|
||||
should_execute_handler = false;
|
||||
|
||||
مرجع در شماره جدید
Block a user