已开启
AIV Jetty build failure with CANN C API headers #232
KaranocaVe创建于 26 天前
AIV Jetty build failure with CANN C API headers #232
已开启
共 1 个文件变更+13-13
| @@ -12,7 +12,7 @@ | |||
| 12 | #define IMPL_ADV_API_DETAIL_HCOMM_IMPL_PLATFORM_V310_HCOMM_AIV_URMA_JETTY_H | 12 | #define IMPL_ADV_API_DETAIL_HCOMM_IMPL_PLATFORM_V310_HCOMM_AIV_URMA_JETTY_H |
| 13 | 13 | ||
| 14 | #include <c_api/sync/sync.h> | 14 | #include <c_api/sync/sync.h> |
| 15 | -#include <c_api/utils/sys_var.h> | 15 | +#include <c_api/sys_var/sys_var.h> |
| 16 | #include <c_api/vector_datamove/vector_datamove.h> | 16 | #include <c_api/vector_datamove/vector_datamove.h> |
| 17 | 17 | ||
| 18 | #include "../../../hcomm/common/hcomm_inner_def.h" | 18 | #include "../../../hcomm/common/hcomm_inner_def.h" |
| @@ -39,7 +39,7 @@ __aicore__ inline HcommPeer::HcommPeer(__ubuf__ HcommJettyPeerInfo* peerInfo, GM | |||
| 39 | { | 39 | { |
| 40 | HCOMM_DEBUG_TRAP_IF(peerInfo == nullptr || jettyTable == nullptr, "peerInfo or jettyTable is nullptr\n"); | 40 | HCOMM_DEBUG_TRAP_IF(peerInfo == nullptr || jettyTable == nullptr, "peerInfo or jettyTable is nullptr\n"); |
| 41 | auto* table = reinterpret_cast<__gm__ uint64_t*>(jettyTable); | 41 | auto* table = reinterpret_cast<__gm__ uint64_t*>(jettyTable); |
| 42 | - uint64_t jettyValue = ReadGmBypassDCache(table + jettyIdx); | 42 | + uint64_t jettyValue = ReadGmByPassDCache(table + jettyIdx); |
| 43 | HCOMM_DEBUG_TRAP_IF(jettyValue == 0U, "jettyTable[%u] is 0\n", jettyIdx); | 43 | HCOMM_DEBUG_TRAP_IF(jettyValue == 0U, "jettyTable[%u] is 0\n", jettyIdx); |
| 44 | auto* jetty = reinterpret_cast<__gm__ ChannelEntity*>(jettyValue); | 44 | auto* jetty = reinterpret_cast<__gm__ ChannelEntity*>(jettyValue); |
| 45 | HCOMM_DEBUG_TRAP_IF( | 45 | HCOMM_DEBUG_TRAP_IF( |
| @@ -65,7 +65,7 @@ __aicore__ inline HcommJettyImpl::HcommJettyImpl( | |||
| 65 | { | 65 | { |
| 66 | HCOMM_DEBUG_TRAP_IF(jettyInfo == nullptr || jettyTable == nullptr, "jettyInfo or jettyTable is nullptr\n"); | 66 | HCOMM_DEBUG_TRAP_IF(jettyInfo == nullptr || jettyTable == nullptr, "jettyInfo or jettyTable is nullptr\n"); |
| 67 | auto* table = reinterpret_cast<__gm__ uint64_t*>(jettyTable); | 67 | auto* table = reinterpret_cast<__gm__ uint64_t*>(jettyTable); |
| 68 | - uint64_t jettyValue = ReadGmBypassDCache(table + jettyIdx); | 68 | + uint64_t jettyValue = ReadGmByPassDCache(table + jettyIdx); |
| 69 | HCOMM_DEBUG_TRAP_IF(jettyValue == 0U, "jettyTable[%u] is 0\n", jettyIdx); | 69 | HCOMM_DEBUG_TRAP_IF(jettyValue == 0U, "jettyTable[%u] is 0\n", jettyIdx); |
| 70 | auto* jetty = reinterpret_cast<__gm__ ChannelEntity*>(jettyValue); | 70 | auto* jetty = reinterpret_cast<__gm__ ChannelEntity*>(jettyValue); |
| 71 | HCOMM_DEBUG_TRAP_IF(jetty->sqContextAddr == nullptr || jetty->cqContextAddr == nullptr, "jetty info is nullptr\n"); | 71 | HCOMM_DEBUG_TRAP_IF(jetty->sqContextAddr == nullptr || jetty->cqContextAddr == nullptr, "jetty info is nullptr\n"); |
| @@ -78,7 +78,7 @@ __aicore__ inline HcommJettyImpl::HcommJettyImpl( | |||
| 78 | jettyInfo_->cqBaseAddr = cqContext->contextInfo.ubJfc.scqVa; | 78 | jettyInfo_->cqBaseAddr = cqContext->contextInfo.ubJfc.scqVa; |
| 79 | jettyInfo_->cqTailAddr = cqContext->contextInfo.ubJfc.tailAddr; | 79 | jettyInfo_->cqTailAddr = cqContext->contextInfo.ubJfc.tailAddr; |
| 80 | jettyInfo_->cqDoorbellAddr = cqContext->contextInfo.ubJfc.dbVa; | 80 | jettyInfo_->cqDoorbellAddr = cqContext->contextInfo.ubJfc.dbVa; |
| 81 | - jettyInfo_->packedHead = ReadGmBypassDCache(reinterpret_cast<__gm__ uint64_t*>(jettyInfo_->sqHeadAddr)); | 81 | + jettyInfo_->packedHead = ReadGmByPassDCache(reinterpret_cast<__gm__ uint64_t*>(jettyInfo_->sqHeadAddr)); |
| 82 | jettyInfo_->numWqebbBytes = sqContext->contextInfo.ubJfs.wqeSize; | 82 | jettyInfo_->numWqebbBytes = sqContext->contextInfo.ubJfs.wqeSize; |
| 83 | jettyInfo_->numCqeBytes = cqContext->contextInfo.ubJfc.cqeSize; | 83 | jettyInfo_->numCqeBytes = cqContext->contextInfo.ubJfc.cqeSize; |
| 84 | jettyInfo_->sqDepth = sqContext->contextInfo.ubJfs.sqDepth; | 84 | jettyInfo_->sqDepth = sqContext->contextInfo.ubJfs.sqDepth; |
| @@ -162,14 +162,14 @@ __aicore__ inline void HcommJettyImpl::AdvanceSq(uint32_t numWqebbs) | |||
| 162 | const uint32_t head = static_cast<uint32_t>(jettyInfo_->packedHead) + numWqebbs; | 162 | const uint32_t head = static_cast<uint32_t>(jettyInfo_->packedHead) + numWqebbs; |
| 163 | const uint32_t expectedCqeCnt = static_cast<uint32_t>(jettyInfo_->packedHead >> 32U) + 1U; | 163 | const uint32_t expectedCqeCnt = static_cast<uint32_t>(jettyInfo_->packedHead >> 32U) + 1U; |
| 164 | jettyInfo_->packedHead = static_cast<uint64_t>(head) | (static_cast<uint64_t>(expectedCqeCnt) << 32U); | 164 | jettyInfo_->packedHead = static_cast<uint64_t>(head) | (static_cast<uint64_t>(expectedCqeCnt) << 32U); |
| 165 | - WriteGmBypassDCache(reinterpret_cast<__gm__ uint64_t*>(jettyInfo_->sqHeadAddr), jettyInfo_->packedHead); | 165 | + WriteGmByPassDCache(reinterpret_cast<__gm__ uint64_t*>(jettyInfo_->sqHeadAddr), jettyInfo_->packedHead); |
| 166 | AscendC::DataSyncBarrier<AscendC::MemDsbT::DDR>(); | 166 | AscendC::DataSyncBarrier<AscendC::MemDsbT::DDR>(); |
| 167 | } | 167 | } |
| 168 | 168 | ||
| 169 | __aicore__ inline void HcommJettyImpl::RingDoorbell() | 169 | __aicore__ inline void HcommJettyImpl::RingDoorbell() |
| 170 | { | 170 | { |
| 171 | // The doorbell only takes the head, which lives in the low 32 bits of packedHead. | 171 | // The doorbell only takes the head, which lives in the low 32 bits of packedHead. |
| 172 | - WriteGmBypassDCache( | 172 | + WriteGmByPassDCache( |
| 173 | reinterpret_cast<__gm__ uint32_t*>(jettyInfo_->sqDoorbellAddr), static_cast<uint32_t>(jettyInfo_->packedHead)); | 173 | reinterpret_cast<__gm__ uint32_t*>(jettyInfo_->sqDoorbellAddr), static_cast<uint32_t>(jettyInfo_->packedHead)); |
| 174 | } | 174 | } |
| 175 | 175 | ||
| @@ -182,7 +182,7 @@ __aicore__ inline void HcommJettyImpl::PollCqWhenSqOverflow() | |||
| 182 | constexpr uint32_t nearFullThreshold = 10U; | 182 | constexpr uint32_t nearFullThreshold = 10U; |
| 183 | constexpr uint32_t reclaimBatch = 100U; | 183 | constexpr uint32_t reclaimBatch = 100U; |
| 184 | uint32_t completions = static_cast<uint32_t>(jettyInfo_->packedHead >> 32U); | 184 | uint32_t completions = static_cast<uint32_t>(jettyInfo_->packedHead >> 32U); |
| 185 | - uint32_t tail = ReadGmBypassDCache(reinterpret_cast<__gm__ uint32_t*>(jettyInfo_->completionTailAddr)); | 185 | + uint32_t tail = ReadGmByPassDCache(reinterpret_cast<__gm__ uint32_t*>(jettyInfo_->completionTailAddr)); |
| 186 | if (completions - tail + nearFullThreshold >= jettyInfo_->cqDepth) { | 186 | if (completions - tail + nearFullThreshold >= jettyInfo_->cqDepth) { |
| 187 | PollCq<timeoutCycles>(tail + reclaimBatch < completions ? tail + reclaimBatch : completions); | 187 | PollCq<timeoutCycles>(tail + reclaimBatch < completions ? tail + reclaimBatch : completions); |
| 188 | } | 188 | } |
| @@ -191,7 +191,7 @@ __aicore__ inline void HcommJettyImpl::PollCqWhenSqOverflow() | |||
| 191 | template <int64_t timeoutCycles> | 191 | template <int64_t timeoutCycles> |
| 192 | __aicore__ inline int32_t HcommJettyImpl::PollCq(uint32_t expectedTail) | 192 | __aicore__ inline int32_t HcommJettyImpl::PollCq(uint32_t expectedTail) |
| 193 | { | 193 | { |
| 194 | - uint32_t currentTail = ReadGmBypassDCache(reinterpret_cast<__gm__ uint32_t*>(jettyInfo_->cqTailAddr)); | 194 | + uint32_t currentTail = ReadGmByPassDCache(reinterpret_cast<__gm__ uint32_t*>(jettyInfo_->cqTailAddr)); |
| 195 | while (currentTail != expectedTail) { | 195 | while (currentTail != expectedTail) { |
| 196 | auto* cqe = reinterpret_cast<__gm__ uint32_t*>( | 196 | auto* cqe = reinterpret_cast<__gm__ uint32_t*>( |
| 197 | jettyInfo_->cqBaseAddr + | 197 | jettyInfo_->cqBaseAddr + |
| @@ -200,7 +200,7 @@ __aicore__ inline int32_t HcommJettyImpl::PollCq(uint32_t expectedTail) | |||
| 200 | uint64_t start = static_cast<uint64_t>(asc_get_system_cycle()); | 200 | uint64_t start = static_cast<uint64_t>(asc_get_system_cycle()); |
| 201 | uint32_t header; | 201 | uint32_t header; |
| 202 | do { | 202 | do { |
| 203 | - header = ReadGmBypassDCache(cqe); | 203 | + header = ReadGmByPassDCache(cqe); |
| 204 | if (((header >> HCOMM_JETTY_CQE_OWNER_BIT) & 1U) != phase) { | 204 | if (((header >> HCOMM_JETTY_CQE_OWNER_BIT) & 1U) != phase) { |
| 205 | break; | 205 | break; |
| 206 | } | 206 | } |
| @@ -218,10 +218,10 @@ __aicore__ inline int32_t HcommJettyImpl::PollCq(uint32_t expectedTail) | |||
| 218 | } | 218 | } |
| 219 | ++currentTail; | 219 | ++currentTail; |
| 220 | } | 220 | } |
| 221 | - WriteGmBypassDCache(reinterpret_cast<__gm__ uint32_t*>(jettyInfo_->cqTailAddr), currentTail); | 221 | + WriteGmByPassDCache(reinterpret_cast<__gm__ uint32_t*>(jettyInfo_->cqTailAddr), currentTail); |
| 222 | - WriteGmBypassDCache( | 222 | + WriteGmByPassDCache( |
| 223 | reinterpret_cast<__gm__ uint32_t*>(jettyInfo_->cqDoorbellAddr), currentTail & HCOMM_JETTY_CQ_DOORBELL_MASK); | 223 | reinterpret_cast<__gm__ uint32_t*>(jettyInfo_->cqDoorbellAddr), currentTail & HCOMM_JETTY_CQ_DOORBELL_MASK); |
| 224 | - WriteGmBypassDCache(reinterpret_cast<__gm__ uint32_t*>(jettyInfo_->completionTailAddr), currentTail); | 224 | + WriteGmByPassDCache(reinterpret_cast<__gm__ uint32_t*>(jettyInfo_->completionTailAddr), currentTail); |
| 225 | AscendC::DataSyncBarrier<AscendC::MemDsbT::DDR>(); | 225 | AscendC::DataSyncBarrier<AscendC::MemDsbT::DDR>(); |
| 226 | return HCOMM_SUCCESS; | 226 | return HCOMM_SUCCESS; |
| 227 | } | 227 | } |
| @@ -268,7 +268,7 @@ template <int64_t timeoutCycles> | |||
| 268 | __aicore__ inline int32_t HcommJettyImpl::Drain() | 268 | __aicore__ inline int32_t HcommJettyImpl::Drain() |
| 269 | { | 269 | { |
| 270 | HCOMM_DEBUG_TRAP_IF(!Ready() || jettyInfo_->numCqeBytes == 0U, "HcommJetty Drain on an unready jetty\n"); | 270 | HCOMM_DEBUG_TRAP_IF(!Ready() || jettyInfo_->numCqeBytes == 0U, "HcommJetty Drain on an unready jetty\n"); |
| 271 | - uint64_t packedHead = ReadGmBypassDCache(reinterpret_cast<__gm__ uint64_t*>(jettyInfo_->sqHeadAddr)); | 271 | + uint64_t packedHead = ReadGmByPassDCache(reinterpret_cast<__gm__ uint64_t*>(jettyInfo_->sqHeadAddr)); |
| 272 | return PollCq<timeoutCycles>(static_cast<uint32_t>(packedHead >> 32U)); | 272 | return PollCq<timeoutCycles>(static_cast<uint32_t>(packedHead >> 32U)); |
| 273 | } | 273 | } |
| 274 | 274 | ||
ReadGmByPassDCache 接口已标注为废弃,建议使用社区包进行编译,详见 https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/latest/API/ascendcopapi/docs/zh/api/SIMD-API/basic_api/deprecated_interface/ReadGmByPassDCache_ISASI_deprecated.md