SWDEV-301667 - Refactor graph code
- Remove Last graph node optimization and instead submit a barrier NOP packet always. This simplifies the code. Change-Id: Ied443173ba47a08b6df148ac7e3ead712acda11c
This commit is contained in:
committed by
Maneesh Gupta
parent
3d540ec113
commit
badf2b0880
@@ -3477,23 +3477,11 @@ void VirtualGPU::submitAccumulate(amd::AccumulateCommand& vcmd) {
|
||||
amd::ScopedLock lock(execution());
|
||||
profilingBegin(vcmd, true);
|
||||
|
||||
uint8_t* aqlPacket = vcmd.getLastPacket();
|
||||
if (aqlPacket != nullptr) {
|
||||
dispatchBlockingWait();
|
||||
auto packet = reinterpret_cast<hsa_kernel_dispatch_packet_t*>(aqlPacket);
|
||||
dispatchGenericAqlPacket(packet, packet->header, packet->setup, false);
|
||||
// We need to set fence_dirty_ flag as we would use a dispatch packet with a completion signal
|
||||
// to track graph finish for the last. The sync logic assumes HW event to a barrier packet that
|
||||
// has a system scope release. This would cause isFenceDirty() check at top level to insert
|
||||
// barrier packet wherever needed
|
||||
fence_dirty_ = true;
|
||||
const Settings& settings = dev().settings();
|
||||
if (settings.barrier_value_packet_) {
|
||||
dispatchBarrierValuePacket(kBarrierVendorPacketNopScopeHeader, true);
|
||||
} else {
|
||||
const Settings& settings = dev().settings();
|
||||
if (settings.barrier_value_packet_) {
|
||||
dispatchBarrierValuePacket(kBarrierVendorPacketNopScopeHeader, true);
|
||||
} else {
|
||||
dispatchBarrierPacket(kNopPacketHeader, false);
|
||||
}
|
||||
dispatchBarrierPacket(kNopPacketHeader, false);
|
||||
}
|
||||
|
||||
profilingEnd(vcmd);
|
||||
|
||||
@@ -1251,8 +1251,6 @@ class Marker : public Command {
|
||||
|
||||
class AccumulateCommand : public Command {
|
||||
private:
|
||||
uint8_t* lastPacket_;
|
||||
|
||||
//! Kernel names and timestamps list for activity profiling
|
||||
std::vector<std::string> kernelNames_;
|
||||
std::vector<std::pair<uint64_t, uint64_t>> tsList_;
|
||||
@@ -1260,12 +1258,9 @@ class AccumulateCommand : public Command {
|
||||
public:
|
||||
//! Create a new Marker
|
||||
AccumulateCommand(HostQueue& queue, const EventWaitList& eventWaitList = nullWaitList,
|
||||
const Event* waitingEvent = nullptr, uint8_t* lastPacket = nullptr)
|
||||
: Command(queue, CL_COMMAND_TASK, eventWaitList, 0, waitingEvent),
|
||||
lastPacket_(lastPacket)
|
||||
const Event* waitingEvent = nullptr)
|
||||
: Command(queue, CL_COMMAND_TASK, eventWaitList, 0, waitingEvent)
|
||||
{}
|
||||
//! Return last packet
|
||||
uint8_t* getLastPacket() const { return lastPacket_; }
|
||||
|
||||
//! Add kernel name to the list if available
|
||||
void addKernelName(const std::string& kernelName) {
|
||||
|
||||
Reference in New Issue
Block a user