SWDEV-470612 - Avoid processing internal signals

If only external signals were provided, then just process it
without adding internal signals

Change-Id: Iaefd65d0f8b0a64b9f6a864a9bd73de20a29dfa4


[ROCm/clr commit: 18187cd8fe]
Этот коммит содержится в:
German Andryeyev
2024-07-24 17:10:16 -04:00
родитель 47dcfbae6b
Коммит 9d1d3a6493
3 изменённых файлов: 18 добавлений и 20 удалений
+1 -2
Просмотреть файл
@@ -39,8 +39,7 @@ enum HwQueueEngine : uint32_t {
Compute = 0,
SdmaRead = 1,
SdmaWrite = 2,
Unknown = 3,
External = 4
Unknown = 3
};
} // namespace amd::roc
+17 -17
Просмотреть файл
@@ -534,28 +534,28 @@ std::vector<hsa_signal_t>& VirtualGPU::HwQueueTracker::WaitingSignal(HwQueueEngi
if (!skip_internal_signal) {
external_signals_.push_back(signal_list_[current_id_]);
}
}
// Validate all signals for the wait and skip already completed
for (uint32_t i = 0; i < external_signals_.size(); ++i) {
// Early signal status check
if (hsa_signal_load_relaxed(external_signals_[i]->signal_) > 0) {
const Settings& settings = gpu_.dev().settings();
// Actively wait on CPU to avoid extra overheads of signal tracking on GPU.
// For small copies set forced wait
if (!WaitForSignal<true>(external_signals_[i]->signal_, false,
external_signals_[i]->flags_.forceHostWait_)) {
if (settings.cpu_wait_for_signal_) {
// Wait on CPU for completion if requested
CpuWaitForSignal(external_signals_[i]);
} else {
// Add HSA signal for tracking on GPU
waiting_signals_.push_back(external_signals_[i]->signal_);
}
// Validate all signals for the wait and skip already completed
for (uint32_t i = 0; i < external_signals_.size(); ++i) {
// Early signal status check
if (hsa_signal_load_relaxed(external_signals_[i]->signal_) > 0) {
const Settings& settings = gpu_.dev().settings();
// Actively wait on CPU to avoid extra overheads of signal tracking on GPU.
// For small copies set forced wait
if (!WaitForSignal<true>(external_signals_[i]->signal_, false,
external_signals_[i]->flags_.forceHostWait_)) {
if (settings.cpu_wait_for_signal_) {
// Wait on CPU for completion if requested
CpuWaitForSignal(external_signals_[i]);
} else {
// Add HSA signal for tracking on GPU
waiting_signals_.push_back(external_signals_[i]->signal_);
}
}
}
external_signals_.clear();
}
external_signals_.clear();
// Return the array of waiting HSA signals
return waiting_signals_;
-1
Просмотреть файл
@@ -253,7 +253,6 @@ class VirtualGPU : public device::VirtualDevice {
//! Adds an external signal(submission in another queue) for dependency tracking
void AddExternalSignal(ProfilingSignal* signal) {
external_signals_.push_back(signal);
engine_ = HwQueueEngine::External;
}
//! Get the last active signal on the queue