SWDEV-334150 - Force callback to cycle commands

Enqueue a handler callback for hipEventRecords(aka marker_ts_) for every
64 submits, This recycles the memory if we dont end up calling
synchronize for the longest time.

Change-Id: I3d39fe76d52a5d81387927edd85b5663b563682c


[ROCm/clr commit: fa76f03654]
Этот коммит содержится в:
Saleel Kudchadker
2022-04-27 11:13:41 -07:00
родитель d5bc650de9
Коммит 29752a2bbc
3 изменённых файлов: 23 добавлений и 2 удалений
+10 -1
Просмотреть файл
@@ -336,6 +336,7 @@ void Command::releaseResources() {
}
}
static constexpr uint32_t kMarkerTsCount = 64;
// ================================================================================================
void Command::enqueue() {
assert(queue_ != NULL && "Cannot be enqueued");
@@ -368,7 +369,15 @@ void Command::enqueue() {
EnableProfiling();
}
if (isMarker && (!profilingInfo().marker_ts_)) {
bool submitBatch = !profilingInfo().marker_ts_;
// Flush the batch if ther marker_ts have been continuously submitted until a threashold
// is reached. This helps recycling the commands and frees memory.
if (queue_->GetMarkerTsCount() > kMarkerTsCount) {
submitBatch = true;
queue_->ResetMarkerTsCount();
}
if (isMarker && submitBatch) {
// Update batch head for the current marker. Hence the status of all commands can be
// updated upon the marker completion
SetBatchHead(queue_->GetSubmittionBatch());