Initialize
产品支持情况
|
产品 |
是否支持 |
|---|---|
|
Atlas 350 加速卡 |
x |
|
|
√ |
|
|
√ |
|
|
x |
|
|
x |
|
|
x |
说明:针对
函数功能
初始化HIXL,在调用其他接口前需要先调用该接口。
函数原型
1
|
Status Initialize(const AscendString &local_engine, const std::map<AscendString, AscendString> &options) |
参数说明
|
参数名 |
输入/输出 |
描述 |
|---|---|---|
|
local_engine |
输入 |
HIXL标识,在所有参与建链的范围内需要确保唯一。
不建议配置为回环IP,在多个HIXL交互场景,回环IP容易冲突。 当设置host_port且host_port>0时代表当前HIXL作为Server端,需要对配置端口进行侦听。如果没设置host_port或者host_port<=0代表是Client,不启动侦听。 |
|
options |
输入 |
初始化参数值。具体请参考如下表格。 |
OPTION_GLOBAL_RESOURCE_CONFIG的配置示例和使用约束如下:
对于Fabric Mem模式(仅
{
"fabric_memory.max_capacity": "128", //虚拟内存池的大小。取值范围:(0, 1024]之间的整数,默认值:64,单位TB.
"fabric_memory.task_stream_num": "1", //配置Fabric Mem模式下单个任务使用的流数量。取值范围:[1, 8]之间的整数,默认值:4.
}
对于链路池机制,该参数配置示例如下:
{
"channel_pool.max_channel": "10", //最大的链路个数。取值范围:(0, 512]之间的整数,默认值:512
"channel_pool.high_waterline": "0.3", //触发链路销毁的高水位,取值范围:(0,1)之间的小数,需要和channel_pool.low_waterline同时配置
"channel_pool.low_waterline": "0.1" //触发链路销毁的低水位,取值范围:(0,1)之间小数,并且小于高水位
}
链路池工作时,实际依据链路个数判断是否进行销毁,如果当前链路个数已经达到高水位对应的链路个数,则选择(当前链路个数-低水位对应的链路个数 )条链路进行销毁(如存在正在传输的任务,则不会销毁),再建链。相关参数计算公式如下:
- 高水位线对应的链路个数=max(1,static_cast<int32_t> (channel_pool.max_channel * channel_pool.high_waterline))
- 低水位线对应的链路个数=max(1,static_cast<int32_t> (channel_pool.max_channel * channel_pool.low_waterline))
在上述配置示例中,按照计算公式,高水位对应的链路个数=3,低水位对应的链路个数=1。每次建链前会检查当前HIXL内的链路是否达到3,如果已经达到,选择(当前链路个数-1 )条链路进行销毁(如存在正在传输的任务,则不会销毁),再建链。
当启用链路池机制时,有如下注意事项:
- 集群内的所有Hixl Engine都需要配置OPTION_GLOBAL_RESOURCE_CONFIG。
- 当调用TransferSync或TransferAsync接口时,若不存在相关链路,将执行建链操作。
- 会增加传输和建链的额外开销,可能导致性能下降。
返回值
- SUCCESS:成功
- PARAM_INVALID:参数错误
- 其他:失败
异常处理
无