clr: Implement dynamic stream to HWq logic (#1958)

* clr: Implement dynamic stream to HW queue assignment

This change implements dynamic stream to hardware queue (HWq) mapping
with the following features:

* Queue depth heuristics with weights for optimal HWq assignment
* Make last used queue sticky for better locality
* Use pipe HWq to pipe mapping - gfx9 follows a round-robin queue to
  pipe mapping based on creation order (single process per device only,
  as pipe ID is statically assigned by runtime)
* More aggressive heuristic usage for better queue distribution
* Extend dynamic queues support for all stream priorities

Environment variables:
* DEBUG_HIP_DYNAMIC_QUEUE: 0 - disabled, 1 - Depth heuristics 2 -
  Depth+Pipe heuristics
* DEBUG_HIP_IGNORE_STREAM_PRIORITY=1: ignore priority stream creation

* clr: Clean up last_used_queue_
Этот коммит содержится в:
SaleelK
2026-01-23 10:40:54 -08:00
коммит произвёл GitHub
родитель 89170521f5
Коммит 340f3aa887
10 изменённых файлов: 341 добавлений и 158 удалений
+3 -2
Просмотреть файл
@@ -35,9 +35,10 @@
namespace amd {
HostQueue::HostQueue(Context& context, Device& device, cl_command_queue_properties props,
uint queueRTCUs, Priority priority, const std::vector<uint32_t>& cuMask)
uint queueRTCUs, Priority priority, const std::vector<uint32_t>& cuMask,
bool dedicated_queue)
: CommandQueue(context, device, props, device.info().queueProperties_, queueRTCUs, priority,
cuMask),
cuMask, dedicated_queue),
lastEnqueueCommand_(nullptr),
head_(nullptr),
tail_(nullptr),