[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