diff --git a/src/hip_hcc.cpp b/src/hip_hcc.cpp index c23bdf6dad..aecf75b717 100644 --- a/src/hip_hcc.cpp +++ b/src/hip_hcc.cpp @@ -1808,7 +1808,7 @@ bool ihipStream_t::canSeeMemory(const ihipCtx_t* copyEngineCtx, const hc::AmPoin // TODO - pointer-info stores a deviceID not a context,may have some unusual side-effects here: if (dstPtrInfo->_sizeBytes == 0) { return false; - } else { + } else if (dstPtrInfo->_appId != -1) { #if USE_APP_PTR_FOR_CTX ihipCtx_t* dstCtx = static_cast(dstPtrInfo->_appPtr); #else @@ -1831,7 +1831,7 @@ bool ihipStream_t::canSeeMemory(const ihipCtx_t* copyEngineCtx, const hc::AmPoin // TODO - pointer-info stores a deviceID not a context,may have some unusual side-effects here: if (srcPtrInfo->_sizeBytes == 0) { return false; - } else { + } else if (srcPtrInfo->_appId != -1) { #if USE_APP_PTR_FOR_CTX ihipCtx_t* srcCtx = static_cast(srcPtrInfo->_appPtr); #else diff --git a/src/hip_memory.cpp b/src/hip_memory.cpp index d6c04ae98c..dc5390f014 100644 --- a/src/hip_memory.cpp +++ b/src/hip_memory.cpp @@ -61,19 +61,20 @@ int sharePtr(void* ptr, ihipCtx_t* ctx, bool shareWithAll, unsigned hipFlags) { auto device = ctx->getWriteableDevice(); -#if USE_APP_PTR_FOR_CTX - hc::am_memtracker_update(ptr, device->_deviceId, hipFlags, ctx); -#else - hc::am_memtracker_update(ptr, device->_deviceId, hipFlags); -#endif - if (shareWithAll) { + // shareWithAll memory is not mapped to any device + hc::am_memtracker_update(ptr, -1, hipFlags); hsa_status_t s = hsa_amd_agents_allow_access(g_deviceCnt + 1, g_allAgents, NULL, ptr); tprintf(DB_MEM, " allow access to CPU + all %d GPUs (shareWithAll)\n", g_deviceCnt); if (s != HSA_STATUS_SUCCESS) { ret = -1; } } else { +#if USE_APP_PTR_FOR_CTX + hc::am_memtracker_update(ptr, device->_deviceId, hipFlags, ctx); +#else + hc::am_memtracker_update(ptr, device->_deviceId, hipFlags); +#endif int peerCnt = 0; { LockedAccessor_CtxCrit_t crit(ctx->criticalData());