[clang] [llvm] [OpenMP] Adds omp_target_is_accessible routine (PR #138294)
Shilei Tian via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 28 08:39:27 PDT 2025
================
@@ -3027,6 +3027,29 @@ struct AMDGPUDeviceTy : public GenericDeviceTy, AMDGenericDeviceTy {
return ((IsAPU || OMPX_ApuMaps) && IsXnackEnabled);
}
+ bool isAccessiblePtrImpl(const void *Ptr, size_t Size) override {
+ hsa_amd_pointer_info_t Info;
+ Info.size = sizeof(hsa_amd_pointer_info_t);
+
+ hsa_agent_t *Agents = nullptr;
+ uint32_t Count = 0;
+ hsa_status_t Status =
+ hsa_amd_pointer_info(Ptr, &Info, malloc, &Count, &Agents);
+
+ if (Status != HSA_STATUS_SUCCESS)
+ return false;
+
+ // Checks if the pointer is known by HSA and accessible by the device
+ for (uint32_t i = 0; i < Count; i++)
+ if (Agents[i].handle == getAgent().handle)
+ return Info.sizeInBytes >= Size;
+
+ // If the pointer is unknown to HSA it's assumed a host pointer
+ // in that case the device can access it on unified memory support is
+ // enabled
+ return IsXnackEnabled;
----------------
shiltian wrote:
Then it should be documented.
https://github.com/llvm/llvm-project/pull/138294
More information about the llvm-commits
mailing list