From 04a38ce034f676fd80fd50d69c76661939e548a8 Mon Sep 17 00:00:00 2001 From: Giovanni Lenzi Baraldi Date: Mon, 22 Jul 2024 14:09:56 -0300 Subject: [PATCH] Adding barrier bit on packets after dispatch (#981) Co-authored-by: Gopesh Bhardwaj --- source/lib/rocprofiler-sdk/hsa/aql_packet.cpp | 15 +++++++++------ .../thread_trace/tests/att_packet_test.cpp | 3 --- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/source/lib/rocprofiler-sdk/hsa/aql_packet.cpp b/source/lib/rocprofiler-sdk/hsa/aql_packet.cpp index 97628b1286..eeb10c4cd9 100644 --- a/source/lib/rocprofiler-sdk/hsa/aql_packet.cpp +++ b/source/lib/rocprofiler-sdk/hsa/aql_packet.cpp @@ -114,11 +114,13 @@ CounterAQLPacket::CounterAQLPacket(aqlprofile_agent_handle_t ag reinterpret_cast(&pool)); if(status != HSA_STATUS_SUCCESS) ROCP_FATAL << "Could not create PMC packets!"; - auto header = HSA_PACKET_TYPE_VENDOR_SPECIFIC << HSA_PACKET_HEADER_TYPE; - packets.start_packet.header = header; - packets.stop_packet.header = header; - packets.read_packet.header = header; - empty = false; + packets.start_packet.header = 1 << HSA_PACKET_HEADER_BARRIER; + // Read and stop packets require the barrier bit set to wait for the dispatch packet + auto header = (HSA_PACKET_TYPE_VENDOR_SPECIFIC << HSA_PACKET_HEADER_TYPE) | + (1 << HSA_PACKET_HEADER_BARRIER); + packets.stop_packet.header = header; + packets.read_packet.header = header; + empty = false; } hsa_status_t @@ -180,7 +182,8 @@ TraceControlAQLPacket::TraceControlAQLPacket(const TraceMemoryPool& _tr CHECK_HSA(status, "failed to create ATT packet"); packets.start_packet.header = HSA_PACKET_TYPE_VENDOR_SPECIFIC << HSA_PACKET_HEADER_TYPE; - packets.stop_packet.header = HSA_PACKET_TYPE_VENDOR_SPECIFIC << HSA_PACKET_HEADER_TYPE; + packets.stop_packet.header = (HSA_PACKET_TYPE_VENDOR_SPECIFIC << HSA_PACKET_HEADER_TYPE) | + (1 << HSA_PACKET_HEADER_BARRIER); packets.start_packet.completion_signal = hsa_signal_t{.handle = 0}; packets.stop_packet.completion_signal = hsa_signal_t{.handle = 0}; this->empty = false; diff --git a/source/lib/rocprofiler-sdk/thread_trace/tests/att_packet_test.cpp b/source/lib/rocprofiler-sdk/thread_trace/tests/att_packet_test.cpp index d65430c91e..5ac8e46544 100644 --- a/source/lib/rocprofiler-sdk/thread_trace/tests/att_packet_test.cpp +++ b/source/lib/rocprofiler-sdk/thread_trace/tests/att_packet_test.cpp @@ -95,11 +95,8 @@ TEST(thread_trace, resource_creation) packet->populate_before(); packet->populate_after(); - size_t vendor_packet = HSA_PACKET_TYPE_VENDOR_SPECIFIC << HSA_PACKET_HEADER_TYPE; ASSERT_TRUE(packet->before_krn_pkt.size() > 0); ASSERT_TRUE(packet->after_krn_pkt.size() > 0); - ASSERT_TRUE(packet->before_krn_pkt.at(0).header == vendor_packet); - ASSERT_TRUE(packet->after_krn_pkt.at(0).header == vendor_packet); } {