From 21d7bbab11c50222779c000891ef4f5a60235ea8 Mon Sep 17 00:00:00 2001 From: Rahul Garg Date: Mon, 25 Mar 2019 23:07:05 +0530 Subject: [PATCH 1/2] Avoid double mapping of devices to hostMalloc buffer [ROCm/clr commit: ad11972f4721ac46ed83cf3ac30e10473e63a928] --- projects/clr/hipamd/src/hip_memory.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/projects/clr/hipamd/src/hip_memory.cpp b/projects/clr/hipamd/src/hip_memory.cpp index d540ab782b..7cae2b2a10 100644 --- a/projects/clr/hipamd/src/hip_memory.cpp +++ b/projects/clr/hipamd/src/hip_memory.cpp @@ -339,15 +339,19 @@ hipError_t hipHostMalloc(void** ptr, size_t sizeBytes, unsigned int flags) { hip_status = hipErrorInvalidValue; } else { auto device = ctx->getWriteableDevice(); - +#if (__hcc_workweek__ >= 19115) + //Avoid mapping host pinned memory to all devices by HCC + unsigned amFlags = amHostUnmapped; +#else unsigned amFlags = 0; +#endif if (flags & hipHostMallocCoherent) { - amFlags = amHostCoherent; + amFlags |= amHostCoherent; } else if (flags & hipHostMallocNonCoherent) { - amFlags = amHostNonCoherent; + amFlags |= amHostNonCoherent; } else { // depends on env variables: - amFlags = HIP_HOST_COHERENT ? amHostCoherent : amHostNonCoherent; + amFlags |= HIP_HOST_COHERENT ? amHostCoherent : amHostNonCoherent; } From 0d47ae42039e10c56d453e213232d582bb1f996d Mon Sep 17 00:00:00 2001 From: Rahul Garg Date: Tue, 26 Mar 2019 10:19:13 +0530 Subject: [PATCH 2/2] Let hipHostMalloc always share/map pinned host ptr [ROCm/clr commit: 9b38380c03d4040712e48e24f1934e5252393383] --- projects/clr/hipamd/src/hip_memory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/clr/hipamd/src/hip_memory.cpp b/projects/clr/hipamd/src/hip_memory.cpp index 7cae2b2a10..e3823c504e 100644 --- a/projects/clr/hipamd/src/hip_memory.cpp +++ b/projects/clr/hipamd/src/hip_memory.cpp @@ -357,7 +357,7 @@ hipError_t hipHostMalloc(void** ptr, size_t sizeBytes, unsigned int flags) { *ptr = hip_internal::allocAndSharePtr( (amFlags & amHostCoherent) ? "finegrained_host" : "pinned_host", sizeBytes, ctx, - (trueFlags & hipHostMallocPortable) /*shareWithAll*/, amFlags, flags, 0); + true /*shareWithAll*/, amFlags, flags, 0); if (sizeBytes && (*ptr == NULL)) { hip_status = hipErrorMemoryAllocation;