已合并
[fix] 新增GetSingleLocBufferUniqueId,区分本地与远端buffer的uniqueId生成 #4622
zhengjinwei_y创建于 6 天前
[fix] 新增GetSingleLocBufferUniqueId,区分本地与远端buffer的uniqueId生成 #4622
已合并
zhengjinwei_y创建于 6 天前
8 个文件变更+90-8
Msrc/base_comm/primitives/api_c_adpt/ccu/ccu_launch.cc+3-1
@@ -12,6 +12,7 @@
12 12 
13#include <algorithm>13#include <algorithm>
14#include <iterator>14#include <iterator>
15+#include <limits>
15#include <memory>16#include <memory>
16#include <utility>17#include <utility>
17#include <vector>18#include <vector>
@@ -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);
Msrc/base_comm/resources/endpoint_pairs/channels/aicpu/aicpu_ts_uboe_ub_rtp_channel_helper.cc+16-3
@@ -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+ 
488std::vector<char>502std::vector<char>
489AicpuTsUboeUbRtpChannelHelper::GetRmtBufferUniqueIds(RemoteBufferVec& bufferVec, UboeRmtBufType type) const503AicpuTsUboeUbRtpChannelHelper::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());
Msrc/base_comm/resources/endpoint_pairs/channels/aicpu/aicpu_ts_uboe_ub_rtp_channel_helper.h+1-0
@@ -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 
Msrc/legacy/ascend950/framework/service/ins_rules.cc+5-1
@@ -22,6 +22,8 @@
22#include "hccl_aiv_utils.h"22#include "hccl_aiv_utils.h"
23#include "ccu_ins_group.h"23#include "ccu_ins_group.h"
24 24 
25+#include <limits>
26+ 
25namespace Hccl {27namespace Hccl {
26 28 
27constexpr u32 BASE_BIT = 1; // 用于左移设置二进制数的特定位29constexpr 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(
Msrc/legacy/ascend950/unified_platform/resource/transport/ub_mem_transport.cc+15-3
@@ -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+ 
1058std::vector<char> UbMemTransport::GetNotifyUniqueIds()1071std::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); // 填充一个空的buffer1146+ 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());
Msrc/legacy/ascend950/unified_platform/resource/transport/ub_mem_transport.h+1-0
@@ -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 
Mtest/legacy/ut/unified_platform/resource/transport/ut_ub_mem_transport.cc+42-0
@@ -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+}
Mtest/ut/stub/llt_next_orion_stub.cc+7-0
@@ -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+ 
1007std::vector<char> UbMemTransport::GetNotifyUniqueIds()1014std::vector<char> UbMemTransport::GetNotifyUniqueIds()
1008{1015{
1009 std::vector<char> result(0);1016 std::vector<char> result(0);