From 02dc6f9f9a4eb79f87e6d6c1eb55bfcdbe19fd6c Mon Sep 17 00:00:00 2001 From: Sarbojit Sarkar Date: Thu, 25 Nov 2021 06:16:16 +0000 Subject: [PATCH] SWDEV-310181 - Fix for AtoH Memcpy tests failure Change-Id: Ibf8c8c01257f0516088d50d5c9f82040ed8fa067 --- rocclr/device/rocm/rocmemory.cpp | 13 +++++++++++++ rocclr/platform/memory.hpp | 3 +++ 2 files changed, 16 insertions(+) diff --git a/rocclr/device/rocm/rocmemory.cpp b/rocclr/device/rocm/rocmemory.cpp index bccb74a8ac..2553fffc31 100644 --- a/rocclr/device/rocm/rocmemory.cpp +++ b/rocclr/device/rocm/rocmemory.cpp @@ -1137,6 +1137,19 @@ bool Image::create() { return createInteropImage(); } + // Checking if original device memory can be accessed by peer devices + device::Memory* orgDevMem = owner()->getOriginalDeviceMemory(); + if (amd::IS_HIP && + orgDevMem != nullptr && orgDevMem->getAllowedPeerAccess()) { + roc::Image* orgImage = static_cast(orgDevMem); + // fill all required values + deviceImageInfo_ = orgImage->deviceImageInfo_; + permission_ = orgImage->permission_; + deviceMemory_ = orgImage->deviceMemory_; + hsaImageObject_ = orgImage->hsaImageObject_; + return true; + } + // Get memory size requirement for device specific image. hsa_status_t status = hsa_ext_image_data_get_info(dev().getBackendDevice(), &imageDescriptor_, permission_, &deviceImageInfo_); diff --git a/rocclr/platform/memory.hpp b/rocclr/platform/memory.hpp index 4d28e45965..b24450db49 100644 --- a/rocclr/platform/memory.hpp +++ b/rocclr/platform/memory.hpp @@ -294,6 +294,9 @@ class Memory : public amd::RuntimeObject { bool alloc = true //!< Allocates memory ); + //! Get origianl device memory + device::Memory* getOriginalDeviceMemory() const { return deviceMemories_[0].value_; }; + //! Allocate host memory (as required) bool allocHostMemory(void* initFrom, //!< Host memory provided by the application bool allocHostMem, //!< Force system memory allocation