已合并
[fix] 新增GetSingleLocBufferUniqueId,区分本地与远端buffer的uniqueId生成 #4622
zhengjinwei_y创建于 6 天前
[fix] 新增GetSingleLocBufferUniqueId,区分本地与远端buffer的uniqueId生成 #4622
已合并
共 8 个文件变更+90-8
| @@ -12,6 +12,7 @@ | |||
| 12 | 12 | ||
| 13 | 13 | ||
| 14 | 14 | ||
| 15 | + | ||
| 15 | 16 | ||
| 16 | 17 | ||
| 17 | 18 | ||
| @@ -272,7 +273,8 @@ static HcclResult LaunchCcuTasks(const hcomm::CcuTaskParam& param, const aclrtSt | |||
| 272 | taskInfo.instCnt = param.instCnt; | 273 | taskInfo.instCnt = param.instCnt; |
| 273 | taskInfo.key = param.key; | 274 | taskInfo.key = param.key; |
| 274 | taskInfo.argSize = param.argSize; | 275 | taskInfo.argSize = param.argSize; |
| 275 | - taskInfo.timeout = execTimeOutSec; | 276 | + taskInfo.timeout = execTimeOutSec >= std::numeric_limits<u16>::max() ? std::numeric_limits<u16>::max() : |
| 277 | + static_cast<u16>(execTimeOutSec); | ||
| 276 | std::copy(std::begin(param.args), std::end(param.args), std::begin(taskInfo.args)); | 278 | std::copy(std::begin(param.args), std::end(param.args), std::begin(taskInfo.args)); |
| 277 | 279 | ||
| 278 | auto ret = rtCCULaunch(&taskInfo, stream); | 280 | auto ret = rtCCULaunch(&taskInfo, stream); |
| @@ -485,6 +485,20 @@ std::vector<char> AicpuTsUboeUbRtpChannelHelper::GetSingleRmtBufferUniqueId( | |||
| 485 | return result; | 485 | return result; |
| 486 | } | 486 | } |
| 487 | 487 | ||
| 488 | +std::vector<char> | ||
| 489 | +AicpuTsUboeUbRtpChannelHelper::GetSingleLocBufferUniqueId(u64 addr, u64 size, u32 tokenId, u32 tokenValue) const | ||
| 490 | +{ | ||
| 491 | + Hccl::BinaryStream binaryStream; | ||
| 492 | + binaryStream << addr; | ||
| 493 | + binaryStream << size; | ||
| 494 | + binaryStream << tokenId; | ||
| 495 | + binaryStream << tokenValue; | ||
| 496 | + HCCL_INFO("AicpuTsUboeUbRtpChannelHelper LocBuffer[addr=0x%llx, size=0x%llx]", addr, size); | ||
| 497 | + std::vector<char> result; | ||
| 498 | + binaryStream.Dump(result); | ||
| 499 | + return result; | ||
| 500 | +} | ||
| 501 | + | ||
| 488 | std::vector<char> | 502 | std::vector<char> |
| 489 | AicpuTsUboeUbRtpChannelHelper::GetRmtBufferUniqueIds(RemoteBufferVec& bufferVec, UboeRmtBufType type) const | 503 | AicpuTsUboeUbRtpChannelHelper::GetRmtBufferUniqueIds(RemoteBufferVec& bufferVec, UboeRmtBufType type) const |
| 490 | { | 504 | { |
| @@ -513,11 +527,10 @@ AicpuTsUboeUbRtpChannelHelper::GetLocBufferUniqueIds(LocalBufferVec& bufferVec, | |||
| 513 | for (auto& it : bufferVec) { | 527 | for (auto& it : bufferVec) { |
| 514 | std::vector<char> uniqueId; | 528 | std::vector<char> uniqueId; |
| 515 | if (it != nullptr) { | 529 | if (it != nullptr) { |
| 516 | - uniqueId = GetSingleRmtBufferUniqueId( | 530 | + uniqueId = GetSingleLocBufferUniqueId(it->GetAddr(), it->GetSize(), it->GetTokenId(), it->GetTokenValue()); |
| 517 | - it->GetAddr(), it->GetSize(), it->GetTokenId(), it->GetTokenValue(), UINT32_MAX); | ||
| 518 | HCCL_INFO("UbMemTransport::GetLocBufferUniqueIds, %s", it->Describe().c_str()); | 531 | HCCL_INFO("UbMemTransport::GetLocBufferUniqueIds, %s", it->Describe().c_str()); |
| 519 | } else { | 532 | } else { |
| 520 | - uniqueId = GetSingleRmtBufferUniqueId(0, 0, 0, 0, UINT32_MAX); | 533 | + uniqueId = GetSingleLocBufferUniqueId(0, 0, 0, 0); |
| 521 | HCCL_INFO("UbMemTransport::GetLocBufferUniqueIds, null buffer"); | 534 | HCCL_INFO("UbMemTransport::GetLocBufferUniqueIds, null buffer"); |
| 522 | } | 535 | } |
| 523 | result.insert(result.end(), uniqueId.begin(), uniqueId.end()); | 536 | result.insert(result.end(), uniqueId.begin(), uniqueId.end()); |
| @@ -96,6 +96,7 @@ protected: | |||
| 96 | std::vector<char> GetRmtBufferUniqueIds(RemoteBufferVec& bufferVec, UboeRmtBufType type) const; | 96 | std::vector<char> GetRmtBufferUniqueIds(RemoteBufferVec& bufferVec, UboeRmtBufType type) const; |
| 97 | std::vector<char> GetLocBufferUniqueIds(LocalBufferVec& bufferVec, UboeRmtBufType type) const; | 97 | std::vector<char> GetLocBufferUniqueIds(LocalBufferVec& bufferVec, UboeRmtBufType type) const; |
| 98 | std::vector<char> GetSingleRmtBufferUniqueId(u64 addr, u64 size, u32 tokenId, u32 tokenValue, u32 notifyId) const; | 98 | std::vector<char> GetSingleRmtBufferUniqueId(u64 addr, u64 size, u32 tokenId, u32 tokenValue, u32 notifyId) const; |
| 99 | + std::vector<char> GetSingleLocBufferUniqueId(u64 addr, u64 size, u32 tokenId, u32 tokenValue) const; | ||
| 99 | std::vector<char> GetDrainUniqueIds() const; | 100 | std::vector<char> GetDrainUniqueIds() const; |
| 100 | std::vector<char> GetConnUniqueIds(); | 101 | std::vector<char> GetConnUniqueIds(); |
| 101 | 102 | ||
| @@ -22,6 +22,8 @@ | |||
| 22 | 22 | ||
| 23 | 23 | ||
| 24 | 24 | ||
| 25 | + | ||
| 26 | + | ||
| 25 | namespace Hccl { | 27 | namespace Hccl { |
| 26 | 28 | ||
| 27 | constexpr u32 BASE_BIT = 1; // 用于左移设置二进制数的特定位 | 29 | constexpr u32 BASE_BIT = 1; // 用于左移设置二进制数的特定位 |
| @@ -579,7 +581,9 @@ LaunchCcuTasks(vector<CcuTaskParam> params, const Stream* stream, TaskParam& tas | |||
| 579 | taskInfo.instCnt = it->instCnt; | 581 | taskInfo.instCnt = it->instCnt; |
| 580 | taskInfo.key = it->key; | 582 | taskInfo.key = it->key; |
| 581 | taskInfo.argSize = it->argSize; | 583 | taskInfo.argSize = it->argSize; |
| 582 | - taskInfo.timeout = taskConfig.GetNotifyWaitTime(); | 584 | + taskInfo.timeout = taskConfig.GetNotifyWaitTime() >= std::numeric_limits<u16>::max() ? |
| 585 | + std::numeric_limits<u16>::max() : | ||
| 586 | + static_cast<u16>(taskConfig.GetNotifyWaitTime()); | ||
| 583 | std::copy(std::begin(it->args), std::end(it->args), std::begin(taskInfo.args)); | 587 | std::copy(std::begin(it->args), std::end(it->args), std::begin(taskInfo.args)); |
| 584 | 588 | ||
| 585 | HCCL_INFO( | 589 | HCCL_INFO( |
| @@ -1055,6 +1055,19 @@ UbMemTransport::GetSingleRmtBufferUniqueId(u64 addr, u64 size, u32 tokenId, u32 | |||
| 1055 | return result; | 1055 | return result; |
| 1056 | } | 1056 | } |
| 1057 | 1057 | ||
| 1058 | +std::vector<char> UbMemTransport::GetSingleLocBufferUniqueId(u64 addr, u64 size, u32 tokenId, u32 tokenValue) const | ||
| 1059 | +{ | ||
| 1060 | + BinaryStream binaryStream; | ||
| 1061 | + binaryStream << addr; | ||
| 1062 | + binaryStream << size; | ||
| 1063 | + binaryStream << tokenId; | ||
| 1064 | + binaryStream << tokenValue; | ||
| 1065 | + HCCL_INFO("UbMemTransport LocBuffer[addr=0x%llx, size=0x%llx]", addr, size); | ||
| 1066 | + std::vector<char> result; | ||
| 1067 | + binaryStream.Dump(result); | ||
| 1068 | + return result; | ||
| 1069 | +} | ||
| 1070 | + | ||
| 1058 | std::vector<char> UbMemTransport::GetNotifyUniqueIds() | 1071 | std::vector<char> UbMemTransport::GetNotifyUniqueIds() |
| 1059 | { | 1072 | { |
| 1060 | HCCL_INFO("start packing all notify uniqueIds"); | 1073 | HCCL_INFO("start packing all notify uniqueIds"); |
| @@ -1127,11 +1140,10 @@ std::vector<char> UbMemTransport::GetLocBufferUniqueIds(LocalBufferVec& bufferVe | |||
| 1127 | for (auto& it : bufferVec) { | 1140 | for (auto& it : bufferVec) { |
| 1128 | std::vector<char> uniqueId; | 1141 | std::vector<char> uniqueId; |
| 1129 | if (it != nullptr) { | 1142 | if (it != nullptr) { |
| 1130 | - uniqueId = GetSingleRmtBufferUniqueId( | 1143 | + uniqueId = GetSingleLocBufferUniqueId(it->GetAddr(), it->GetSize(), it->GetTokenId(), it->GetTokenValue()); |
| 1131 | - it->GetAddr(), it->GetSize(), it->GetTokenId(), it->GetTokenValue(), UINT32_MAX); | ||
| 1132 | HCCL_INFO("UbMemTransport::GetLocBufferUniqueIds, %s", it->Describe().c_str()); | 1144 | HCCL_INFO("UbMemTransport::GetLocBufferUniqueIds, %s", it->Describe().c_str()); |
| 1133 | } else { | 1145 | } else { |
| 1134 | - uniqueId = GetSingleRmtBufferUniqueId(0, 0, 0, 0, UINT32_MAX); // 填充一个空的buffer | 1146 | + uniqueId = GetSingleLocBufferUniqueId(0, 0, 0, 0); // 填充一个空的buffer |
| 1135 | HCCL_INFO("UbMemTransport::GetLocBufferUniqueIds, null buffer"); | 1147 | HCCL_INFO("UbMemTransport::GetLocBufferUniqueIds, null buffer"); |
| 1136 | } | 1148 | } |
| 1137 | result.insert(result.end(), uniqueId.begin(), uniqueId.end()); | 1149 | result.insert(result.end(), uniqueId.begin(), uniqueId.end()); |
| @@ -163,6 +163,7 @@ private: | |||
| 163 | std::vector<char> GetRmtBufferUniqueIds(RemoteBufferVec& bufferVec, UbRmtBufType type) const; | 163 | std::vector<char> GetRmtBufferUniqueIds(RemoteBufferVec& bufferVec, UbRmtBufType type) const; |
| 164 | std::vector<char> GetLocBufferUniqueIds(LocalBufferVec& bufferVec, UbRmtBufType type) const; | 164 | std::vector<char> GetLocBufferUniqueIds(LocalBufferVec& bufferVec, UbRmtBufType type) const; |
| 165 | std::vector<char> GetSingleRmtBufferUniqueId(u64 addr, u64 size, u32 tokenId, u32 tokenValue, u32 notifyId) const; | 165 | std::vector<char> GetSingleRmtBufferUniqueId(u64 addr, u64 size, u32 tokenId, u32 tokenValue, u32 notifyId) const; |
| 166 | + std::vector<char> GetSingleLocBufferUniqueId(u64 addr, u64 size, u32 tokenId, u32 tokenValue) const; | ||
| 166 | std::vector<char> GetDrainUniqueIds() const; | 167 | std::vector<char> GetDrainUniqueIds() const; |
| 167 | std::vector<char> GetConnUniqueIds(); | 168 | std::vector<char> GetConnUniqueIds(); |
| 168 | 169 | ||
| @@ -1245,3 +1245,45 @@ TEST_F(UbMemTransportTest, HandleRecvFinStatus_WhenRecvFinishFail_ReturnError) | |||
| 1245 | HcclResult ret = transport.HandleRecvFinStatus(); | 1245 | HcclResult ret = transport.HandleRecvFinStatus(); |
| 1246 | EXPECT_EQ(ret, HCCL_E_INTERNAL); | 1246 | EXPECT_EQ(ret, HCCL_E_INTERNAL); |
| 1247 | } | 1247 | } |
| 1248 | + | ||
| 1249 | +TEST_F(UbMemTransportTest, UbMemTransport_GetSingleLocBufferUniqueId) | ||
| 1250 | +{ | ||
| 1251 | + BaseMemTransport::CommonLocRes locRes; | ||
| 1252 | + BaseMemTransport::Attribution attr; | ||
| 1253 | + BaseMemTransport::LocCntNotifyRes locCntRes; | ||
| 1254 | + LinkData link(BasePortType(PortDeploymentType::P2P), 0, 1, 0, 1); | ||
| 1255 | + void* rdmaHandle = (void*)0x100; | ||
| 1256 | + IpAddress ipAddress("1.0.0.0"); | ||
| 1257 | + Socket fakeSocket(nullptr, ipAddress, 100, ipAddress, "tag", SocketRole::SERVER, NicType::DEVICE_NIC_TYPE); | ||
| 1258 | + | ||
| 1259 | + UbMemTransport transport(locRes, attr, link, fakeSocket, rdmaHandle, locCntRes, isRecvFirst); | ||
| 1260 | + | ||
| 1261 | + u64 addr = 0x1000; | ||
| 1262 | + u64 size = 0x2000; | ||
| 1263 | + u32 tokenId = 100; | ||
| 1264 | + u32 tokenValue = 200; | ||
| 1265 | + | ||
| 1266 | + std::vector<char> result = transport.GetSingleLocBufferUniqueId(addr, size, tokenId, tokenValue); | ||
| 1267 | + | ||
| 1268 | + EXPECT_EQ(result.size(), sizeof(addr) + sizeof(size) + sizeof(tokenId) + sizeof(tokenValue)); | ||
| 1269 | + | ||
| 1270 | + u64 outAddr = 0; | ||
| 1271 | + u64 outSize = 0; | ||
| 1272 | + u32 outTokenId = 0; | ||
| 1273 | + u32 outTokenValue = 0; | ||
| 1274 | + std::copy_n(result.data(), sizeof(outAddr), reinterpret_cast<char*>(&outAddr)); | ||
| 1275 | + std::copy_n(result.data() + sizeof(outAddr), sizeof(outSize), reinterpret_cast<char*>(&outSize)); | ||
| 1276 | + std::copy_n( | ||
| 1277 | + result.data() + sizeof(outAddr) + sizeof(outSize), sizeof(outTokenId), reinterpret_cast<char*>(&outTokenId)); | ||
| 1278 | + std::copy_n( | ||
| 1279 | + result.data() + sizeof(outAddr) + sizeof(outSize) + sizeof(outTokenId), sizeof(outTokenValue), | ||
| 1280 | + reinterpret_cast<char*>(&outTokenValue)); | ||
| 1281 | + | ||
| 1282 | + EXPECT_EQ(outAddr, addr); | ||
| 1283 | + EXPECT_EQ(outSize, size); | ||
| 1284 | + EXPECT_EQ(outTokenId, tokenId); | ||
| 1285 | + EXPECT_EQ(outTokenValue, tokenValue); | ||
| 1286 | + | ||
| 1287 | + std::vector<char> rmtResult = transport.GetSingleRmtBufferUniqueId(addr, size, tokenId, tokenValue, 300); | ||
| 1288 | + EXPECT_EQ(rmtResult.size(), result.size() + sizeof(u32)); | ||
| 1289 | +} | ||
| @@ -1004,6 +1004,13 @@ UbMemTransport::GetSingleRmtBufferUniqueId(u64 addr, u64 size, u32 tokenId, u32 | |||
| 1004 | return result; | 1004 | return result; |
| 1005 | } | 1005 | } |
| 1006 | 1006 | ||
| 1007 | +std::vector<char> UbMemTransport::GetSingleLocBufferUniqueId(u64 addr, u64 size, u32 tokenId, u32 tokenValue) const | ||
| 1008 | +{ | ||
| 1009 | + std::vector<char> result; | ||
| 1010 | + | ||
| 1011 | + return result; | ||
| 1012 | +} | ||
| 1013 | + | ||
| 1007 | std::vector<char> UbMemTransport::GetNotifyUniqueIds() | 1014 | std::vector<char> UbMemTransport::GetNotifyUniqueIds() |
| 1008 | { | 1015 | { |
| 1009 | std::vector<char> result(0); | 1016 | std::vector<char> result(0); |