[Openmp-commits] [openmp] [OpenMP][libomptarget] Enable automatic unified shared memory executi… (PR #75999)

Shilei Tian via Openmp-commits openmp-commits at lists.llvm.org
Tue Dec 19 19:32:40 PST 2023


================
@@ -3109,6 +3126,47 @@ struct AMDGPUPluginTy final : public GenericPluginTy {
     return HSA_STATUS_ERROR;
   }
 
+  /// Detect if current architecture is an APU.
+  void isAPU() {
+    char GfxName[64];
+
+    if (!KernelAgents.size())
+      return;
+
+    // Do not allow for mixed APU+discrete GPU combinations: an APU can only be
+    // that, so only check the first GPU agent.
+    hsa_agent_t GPUAgent = KernelAgents[0];
+    std::memset((void *)&GfxName, 0, sizeof(char) * 64);
+
+    hsa_status_t Status = hsa_agent_get_info(
+        GPUAgent, (hsa_agent_info_t)HSA_AGENT_INFO_NAME, GfxName);
+    if (Status != HSA_STATUS_SUCCESS)
+      return;
+
+    std::string StrGfxName(GfxName);
+    std::transform(std::begin(StrGfxName), std::end(StrGfxName),
+                   std::begin(StrGfxName),
+                   [](char c) { return std::tolower(c); });
+
+    if (StrGfxName == "gfx940") {
+      IsAPU = true;
+      return;
+    } else if (StrGfxName == "gfx942") {
----------------
shiltian wrote:

Early return doesn't need `else if`.

https://github.com/llvm/llvm-project/pull/75999


More information about the Openmp-commits mailing list