已合并
modify docs & bugfix #4730
Leewis创建于 19 天前
modify docs & bugfix #4730
已合并
Leewis创建于 19 天前
8 个文件变更+27-9
@@ -12,7 +12,7 @@ The software dependencies required for compiling this project are listed below.
12- pip3 >= 20.3.012- pip3 >= 20.3.0
13- setuptools >= 45.0.013- setuptools >= 45.0.0
14- wheel >= 0.34.014- wheel >= 0.34.0
15-- gcc and g++: 7.3.0 to 13.3.x15+- gcc and g++: 7.3.0 to 14.2.x
16- cmake >= 3.16.016- cmake >= 3.16.0
17- pkg-config >= 0.29.1 (for compiling rdma-core)17- pkg-config >= 0.29.1 (for compiling rdma-core)
18- patch >= 2.7.0 (for applying patch files)18- patch >= 2.7.0 (for applying patch files)
@@ -52,13 +52,21 @@ HcclResult HcclCommDestroy(HcclComm comm)
52## 调用示例52## 调用示例
53 53 
54```c54```c
55+// 设备资源初始化
56+aclInit(NULL);
55uint32_t rankSize = 2;57uint32_t rankSize = 2;
56int32_t devices[rankSize] = {0, 1};58int32_t devices[rankSize] = {0, 1};
57HcclComm comms[rankSize];59HcclComm comms[rankSize];
60+// 指定集合通信操作使用的设备
61+for (uint32_t i = 0; i < rankSize; i++) {
62+ aclrtSetDevice(devices[i]);
63+}
58// 初始化通信域64// 初始化通信域
59HcclCommInitAll(rankSize, devices, comms);65HcclCommInitAll(rankSize, devices, comms);
60// 销毁通信域66// 销毁通信域
61-for (uint32_t i = 0; i &lt; rankSize; i++) {67+for (uint32_t i = 0; i < rankSize; i++) {
62 HcclCommDestroy(comms[i]);68 HcclCommDestroy(comms[i]);
63}69}
70+// 设备资源去初始化
71+aclFinalize();
64```72```
@@ -49,13 +49,21 @@ HcclResult HcclCommInitAll(uint32_t ndev, int32_t* devices, HcclComm* comms)
49## 调用示例49## 调用示例
50 50 
51```c51```c
52+// 设备资源初始化
53+aclInit(NULL);
52uint32_t rankSize = 2;54uint32_t rankSize = 2;
53int32_t devices[rankSize] = {0, 1};55int32_t devices[rankSize] = {0, 1};
54HcclComm comms[rankSize];56HcclComm comms[rankSize];
57+// 指定集合通信操作使用的设备
58+for (uint32_t i = 0; i < rankSize; i++) {
59+ aclrtSetDevice(devices[i]);
60+}
55// 初始化通信域61// 初始化通信域
56HcclCommInitAll(rankSize, devices, comms);62HcclCommInitAll(rankSize, devices, comms);
57// 销毁通信域63// 销毁通信域
58-for (uint32_t i = 0; i &lt; rankSize; i++) {64+for (uint32_t i = 0; i < rankSize; i++) {
59 HcclCommDestroy(comms[i]);65 HcclCommDestroy(comms[i]);
60}66}
67+// 设备资源去初始化
68+aclFinalize();
61```69```
@@ -33,6 +33,7 @@ typedef enum {
33 - COMM_PROTOCOL_ROCE33 - COMM_PROTOCOL_ROCE
34 - COMM_PROTOCOL_UB_CTP34 - COMM_PROTOCOL_UB_CTP
35 - COMM_ENGINE_AICPU_TS35 - COMM_ENGINE_AICPU_TS
36+ - COMM_PROTOCOL_ROCE
36 - COMM_PROTOCOL_UBOE37 - COMM_PROTOCOL_UBOE
37 - COMM_PROTOCOL_UB_CTP38 - COMM_PROTOCOL_UB_CTP
38 - COMM_PROTOCOL_UB_MEM39 - COMM_PROTOCOL_UB_MEM
@@ -12,7 +12,7 @@
12- pip3 >= 20.3.012- pip3 >= 20.3.0
13- setuptools >= 45.0.013- setuptools >= 45.0.0
14- wheel >= 0.34.014- wheel >= 0.34.0
15-- gcc & g++ : 7.3.0至13.3.x15+- gcc & g++ : 7.3.0至14.2.x
16- cmake >= 3.16.016- cmake >= 3.16.0
17- pkg-config >= 0.29.1(用于编译rdma-core)17- pkg-config >= 0.29.1(用于编译rdma-core)
18- patch >= 2.7.0(用于应用补丁文件)18- patch >= 2.7.0(用于应用补丁文件)
@@ -183,4 +183,4 @@ namespace ccu {
183} // namespace ccu183} // namespace ccu
184} // namespace AscendC184} // namespace AscendC
185 185 
186-#endif // CCU_API_HPP186+#endif // CCU_PRIMITIVES_HPP
@@ -178,8 +178,9 @@ HcclResult ZeroCopyAddressMgr::GetLocalIpc2RemoteAddr(u32 devicePhyId, void* rem
178 void* remoteAddrBase = reinterpret_cast<void*>(rangeIt->start);178 void* remoteAddrBase = reinterpret_cast<void*>(rangeIt->start);
179 auto mapIt = addrMapping.find(remoteAddrBase);179 auto mapIt = addrMapping.find(remoteAddrBase);
180 CHK_PRT_RET(180 CHK_PRT_RET(
181- rangeIt == addrRange.end(),181+ mapIt == addrMapping.end(),
182- HCCL_ERROR("[ZeroCopyAddressMgr][GetLocalIpc2RemoteAddr] dev[%u] addr %p not set", devicePhyId, remoteAddr),182+ HCCL_ERROR(
183+ "[ZeroCopyAddressMgr][GetLocalIpc2RemoteAddr] dev[%u] baseAddr %p not mapped", devicePhyId, remoteAddrBase),
183 HCCL_E_PARA);184 HCCL_E_PARA);
184 185 
185 addr = mapIt->second;186 addr = mapIt->second;
@@ -127,7 +127,7 @@ HcclResult IAicpuTsThread::SdmaCopy(uint64_t dstAddr, uint64_t srcAddr, uint64_t
127{127{
128 // SDMA单个任务最大支持4GB的数据量,超过4GB需要分多次提交128 // SDMA单个任务最大支持4GB的数据量,超过4GB需要分多次提交
129 // 为了避免不必要的依赖和复杂性,这里不直接使用DeviceCapacity中定义的SDMA_SEND_MAX_SIZE,而是直接使用4GB的值129 // 为了避免不必要的依赖和复杂性,这里不直接使用DeviceCapacity中定义的SDMA_SEND_MAX_SIZE,而是直接使用4GB的值
130- if (sizeByte > 0x100000000ULL) {130+ if (sizeByte >= 0x100000000ULL) {
131 HCCL_ERROR("[%s] sizeByte [%llu] exceeds 4GB", __func__, (unsigned long long)sizeByte);131 HCCL_ERROR("[%s] sizeByte [%llu] exceeds 4GB", __func__, (unsigned long long)sizeByte);
132 return HCCL_E_PARA;132 return HCCL_E_PARA;
133 }133 }
@@ -151,7 +151,7 @@ HcclResult IAicpuTsThread::SdmaReduce(
151{151{
152 // SDMA单个任务最大支持4GB的数据量,超过4GB需要分多次提交152 // SDMA单个任务最大支持4GB的数据量,超过4GB需要分多次提交
153 // 为了避免不必要的依赖和复杂性,这里不直接使用DeviceCapacity中定义的SDMA_SEND_MAX_SIZE,而是直接使用4GB的值153 // 为了避免不必要的依赖和复杂性,这里不直接使用DeviceCapacity中定义的SDMA_SEND_MAX_SIZE,而是直接使用4GB的值
154- if (sizeByte > 0x100000000ULL) {154+ if (sizeByte >= 0x100000000ULL) {
155 HCCL_ERROR("[%s] sizeByte [%llu] exceeds 4GB", __func__, (unsigned long long)sizeByte);155 HCCL_ERROR("[%s] sizeByte [%llu] exceeds 4GB", __func__, (unsigned long long)sizeByte);
156 return HCCL_E_PARA;156 return HCCL_E_PARA;
157 }157 }