昇腾社区首页
中文
注册
开发者
下载

中转传输

使用场景

中转传输是指使用中转buffer进行传输,在如下场景中需要使用。

  • 不支持使用HCCS协议进行Host To Host等直传传输时。
  • 使用RDMA进行Host To Host等直传传输注册内存大小有限制时。

功能示例

本示例使用中转传输功能进行Host To Host传输。

  1. Client侧和Server侧根据建链章节的示例完成AdxlEngine的初始化和建链。区别在于初始化阶段需要额外配置一个中转内存池的配置选项"adxl.BufferPool"。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    AdxlEngine engine;
    std::map<AscendString, AscendString> options;
    options["adxl.BufferPool"] = "4:8";
    AscendString local_engine = "ip:port"; // 替换成真实IP端口;是AdxlEngine的唯一标识,端口为有效值
    auto ret = engine.Initialize(local_engine, options);
    if (ret != SUCCESS) {
        printf("[ERROR] Initialize failed, ret = %u\n", ret);
        return -1;
    }
    
  2. 内存管理章节一样进行内存传输,区别在于不需要调用RegisterMem接口注册Host内存,注册了则会走直传模式,不注册会走中转传输模式。

异常处理

  • 错误码TIMEOUT表示传输超时,说明链路出现问题,需要重新断链建链再尝试。
  • 错误码NOT_CONNECTED表示与远端没有建链。