Adding barrier bit on packets after dispatch (#981)

Co-authored-by: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com>
This commit is contained in:
Giovanni Lenzi Baraldi
2024-07-22 14:09:56 -03:00
committed by GitHub
vanhempi 0f89f0449d
commit 04a38ce034
2 muutettua tiedostoa jossa 9 lisäystä ja 9 poistoa
@@ -114,11 +114,13 @@ CounterAQLPacket::CounterAQLPacket(aqlprofile_agent_handle_t ag
reinterpret_cast<void*>(&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;
@@ -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);
}
{