[Openmp-commits] [PATCH] D154523: [OpenMP][AMDGPU] Tracking of busy HSA queues

Johannes Doerfert via Phabricator via Openmp-commits openmp-commits at lists.llvm.org
Wed Jul 5 09:57:36 PDT 2023


jdoerfert added inline comments.


================
Comment at: openmp/libomptarget/plugins-nextgen/amdgpu/src/rtl.cpp:793
+  /// Indicates that the queue is busy when > 0
+  std::atomic<int> Busy{0};
 };
----------------
rename Busy into sth more meaningful, e.g., `NumUsers`.
Spell out the inc/dec, maybe "addUser", "removeUser"



================
Comment at: openmp/libomptarget/plugins-nextgen/amdgpu/src/rtl.cpp:1437
+struct AMDGPUStreamManagerTy
+    : GenericDeviceResourceManagerTy<AMDGPUResourceRef<AMDGPUStreamTy>> {
+  using ResourceRef = AMDGPUResourceRef<AMDGPUStreamTy>;
----------------
Make the class final.


================
Comment at: openmp/libomptarget/plugins-nextgen/amdgpu/src/rtl.cpp:1445
+  Error init(uint32_t InitialSize, int NumHsaQueues, int HsaQueueSize) {
+    Queues = std::vector<AMDGPUQueueTy>(NumHsaQueues);
+    QueueSize = HsaQueueSize;
----------------
Just resize.


================
Comment at: openmp/libomptarget/plugins-nextgen/amdgpu/src/rtl.cpp:1481
+      }
+    }
+
----------------
This ignores the queue size, doesn't it? We should not grow larger than that value.


================
Comment at: openmp/libomptarget/plugins-nextgen/amdgpu/src/rtl.cpp:1485
+    AMDGPUQueueTy *Queue = nullptr;
+    for (auto &Q : Queues)
+      if (!Q.isBusy()) {
----------------
Start with `Current = NextQueue.fetch_add(1, std::memory_order_relaxed) % Size` when you iterate, that way you won't check the first queue all the time.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D154523/new/

https://reviews.llvm.org/D154523



More information about the Openmp-commits mailing list