From 4637cdccbe838360111066c99760814e7f3eef02 Mon Sep 17 00:00:00 2001 From: Ben Sander Date: Thu, 7 Apr 2016 14:28:42 -0500 Subject: [PATCH] Use HCC get_is_pool, add USE_PEER_TO_PEER level 2, 3. [ROCm/clr commit: 52ac414b40884081bca22c30047193bc310c320a] --- .../clr/hipamd/include/hcc_detail/hip_hcc.h | 5 +++-- projects/clr/hipamd/src/hip_peer.cpp | 17 +++++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/projects/clr/hipamd/include/hcc_detail/hip_hcc.h b/projects/clr/hipamd/include/hcc_detail/hip_hcc.h index 23c66759f4..1dd8777b1c 100644 --- a/projects/clr/hipamd/include/hcc_detail/hip_hcc.h +++ b/projects/clr/hipamd/include/hcc_detail/hip_hcc.h @@ -36,8 +36,9 @@ THE SOFTWARE. #define USE_AV_COPY 0 // Compile peer-to-peer support. -// 2= use upcoming HCC APIs. -#define USE_PEER_TO_PEER 1 +// >= 2 : use HCC hc:accelerator::get_is_peer +// >= 3 : use hc::am_memtracker_update_peers(...) +#define USE_PEER_TO_PEER 2 //#define INLINE static inline diff --git a/projects/clr/hipamd/src/hip_peer.cpp b/projects/clr/hipamd/src/hip_peer.cpp index eaac47d82f..2e52f8e586 100644 --- a/projects/clr/hipamd/src/hip_peer.cpp +++ b/projects/clr/hipamd/src/hip_peer.cpp @@ -32,12 +32,12 @@ hipError_t hipDeviceCanAccessPeer (int* canAccessPeer, int deviceId, int peerDe hipError_t err = hipSuccess; #if USE_PEER_TO_PEER - auto device = ihipGetDevice(deviceId); + auto thisDevice = ihipGetDevice(deviceId); auto peerDevice = ihipGetDevice(peerDeviceId); - if ((device != NULL) && (peerDevice != NULL)) { -#if USE_PEER_TO_PEER==2 - *canAccessPeer = peerDevice->_acc.get_is_peer(device->_acc); + if ((thisDevice != NULL) && (peerDevice != NULL)) { +#if USE_PEER_TO_PEER>=2 + *canAccessPeer = peerDevice->_acc.get_is_peer(thisDevice->_acc); #else *canAccessPeer = 0; #endif @@ -66,8 +66,8 @@ hipError_t hipDeviceDisablePeerAccess (int peerDeviceId) auto thisDevice = ihipGetTlsDefaultDevice(); auto peerDevice = ihipGetDevice(peerDeviceId); if ((thisDevice != NULL) && (peerDevice != NULL)) { -#if USE_PEER_TO_PEER==2 - bool canAccessPeer = peerDevice->_acc.get_is_peer(device->_acc); +#if USE_PEER_TO_PEER>=2 + bool canAccessPeer = peerDevice->_acc.get_is_peer(thisDevice->_acc); #else bool canAccessPeer = 0; #endif @@ -79,7 +79,8 @@ hipError_t hipDeviceDisablePeerAccess (int peerDeviceId) LockedAccessor_DeviceCrit_t crit(thisDevice->criticalData()); bool changed = crit->removePeer(peerDevice); if (changed) { -#if USE_PEER_TO_PEER==2 +#if USE_PEER_TO_PEER>=3 + // Update the peers for all memory already saved in the tracker: am_memtracker_update_peers(device->_acc, crit->peerCnt(), crit->peerAgents()); #endif } else { @@ -115,7 +116,7 @@ hipError_t hipDeviceEnablePeerAccess (int peerDeviceId, unsigned int flags) LockedAccessor_DeviceCrit_t crit(thisDevice->criticalData()); bool isNewPeer = crit->addPeer(peerDevice); if (isNewPeer) { -#if USE_PEER_TO_PEER==2 +#if USE_PEER_TO_PEER>=3 am_memtracker_update_peers(device->_acc, crit->peerCnt(), crit->peerAgents()); #endif } else {