HcommChannelCreate
产品支持情况
产品 |
是否支持 |
|---|---|
Atlas 350 加速卡 |
√ |
☓ |
|
☓ |
|
☓ |
|
☓ |
|
☓ |
功能说明
该接口为创建通信通道的资源管理接口,基于已创建的网络端点(Endpoint),根据给定的通道描述信息批量创建通信通道,为点对点通信或集合通信提供数据传输的基础设施。
函数原型
1 | HcommResult HcommChannelCreate(EndpointHandle endpointHandle, CommEngine engine, HcommChannelDesc *channelDescs, uint32_t channelNum, ChannelHandle *channels); |
参数说明
参数名 |
输入/输出 |
说明 |
|---|---|---|
endpointHandle |
输入 |
网络设备端点句柄,标识一个已创建的本地网络设备端点。 EndpointHandle类型的定义请参见EndpointHandle,该句柄必须通过HcommEndpointCreate成功创建,且未销毁。 |
engine |
输入 |
通信引擎类型,指定通道的执行位置。 CommEngine类型的定义请参见CommEngine。 需要注意:必须是有效的引擎类型。 |
channelDescs |
输入 |
通道描述符数组,每个元素描述一个待创建通道的属性信息。 HcommChannelDesc类型的定义请参见HcommChannelDesc。 数组元素数量必须等于channelNum,每个元素需正确填充必要字段。 |
channelNum |
输入 |
待创建的通道数量。 单位:个,取值范围:[1, 1048576]。 该参数需要大于 0。 |
channels |
输出 |
通道句柄数组,用于返回创建成功的通道句柄列表。 ChannelHandle类型的定义请参见ChannelHandle。 调用者分配的数组,需要至少包含channelNum个元素的空间。 |
返回值
HcommResult:接口成功返回0,其他失败。
约束说明
- channelDescs数组长度必须与channelNum参数一致。
- HcommChannelDesc中的remoteEndpoint必须正确填充远端端点信息。
- 当HcommChannelDesc中exchangeAllMems为false时,必须配置memHandles和memHandleNum。
- 当前CommEngine配置为CCU时,仅支持交换1份memHandle。
- 当前CommEngine配置为CCU时,不支持外部配置NotifyNum,默认为8个CCU Notify。
调用示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | EndpointHandle endpointHandle = nullptr; // ... 创建端点的代码(省略) // 创建多个通道 const uint32_t CHANNEL_NUM = 4; HcommChannelDesc channelDescs[CHANNEL_NUM] = {0}; ChannelHandle channels[CHANNEL_NUM] = {0}; // 准备通道描述符并创建通道 for (uint32_t i = 0; i < CHANNEL_NUM; i++) { // ... 填充 channelDescs[i] } HcommResult ret = HcommChannelCreate(endpointHandle, COMM_ENGINE_CPU, channelDescs, CHANNEL_NUM, channels); if (ret != 0) { printf("Failed to create channels, ret = %d\n", ret); HcommEndpointDestroy(endpointHandle); return ret; } printf("%u channels created successfully\n", CHANNEL_NUM); |
父主题: 基础资源管理