开发者
下载
[object Object][object Object]

[object Object] 是异步远程写原语。它启动一次从本地GM到远端GM的传输,并立即返回 [object Object]

数据流:

[object Object] → DMA引擎 → [object Object]

[object Object]
  • [object Object]
    • [object Object](默认)
    • [object Object](Ascend 950PR/Ascend 950DT,仅NPU_ARCH 3510)
[object Object]
[object Object]

声明于 [object Object]

[object Object]

[object Object] 是引擎无关的会话对象。使用 [object Object] 构建一次后,传递给所有异步调用和事件等待。模板参数 [object Object] 在编译期选择DMA后端,使代码对未来引擎(CCU等)保持前向兼容。

[object Object]

使用 [object Object] 中的 [object Object]。 该函数有两个重载——分别用于SDMA和URMA,参数列表不同。

[object Object]
[object Object]
[object Object]undefined
[object Object]
[object Object]
[object Object]
[object Object]undefined

URMA不需要 [object Object]——轮询通过 [object Object]/[object Object] 硬件原语直接操作。

[object Object]
  • [object Object]
  • [object Object]
  • SDMA和URMA路径均要求源tensor为扁平连续的逻辑一维
  • SDMA workspace必须是由主机侧 [object Object] 分配的有效GM指针
  • URMA workspace必须是由主机侧 [object Object] 分配的有效GM指针
  • URMA仅在NPU_ARCH 3510(Ascend 950PR/Ascend 950DT)上可用
  • URMA要求CANN Toolkit >= 9.1.0
  • 传给 [object Object] 的对称数据缓冲区必须由大页内存支撑(使用 [object Object] 分配)。底层MR注册要求大页背景;[object Object] 在小尺寸分配时可能静默回退到4KB小页,导致注册失败

若不满足一维连续要求,当前实现返回无效async event([object Object])。

[object Object]

[object Object] 不是用于存放用户数据负载的暂存缓冲区。 它被转换为 [object Object],用作临时UB工作区,用于:

  • 写入/读取SDMA控制字(flag、sq_tail、channel_info)
  • 轮询事件完成标志
  • 完成时提交队列尾部

实际数据负载直接在GM缓冲区之间传输;[object Object] 仅用于控制和同步元数据。

[object Object]
  • 必须是 [object Object] 类型
  • 必须是UB/Vec tile([object Object]
  • 可用字节数至少为 [object Object](8字节)

推荐使用:[object Object](256Byte)。

[object Object]

不同引擎的底层完成机制不同,但用户侧的quiet语义行为一致:

  • SDMA[object Object] 仅提交数据传输SQE,flag SQE延迟到 [object Object] 时提交,通过轮询flag判断完成。

  • URMA[object Object] 立即提交RDMA WRITE WQE并敲门铃。[object Object] 通过轮询Completion Queue(CQ)等待所有预期的CQE被消费。

  • [object Object] —阻塞,直到自上次Wait以来所有已发出的异步操作全部完成

这意味着多次 [object Object] 调用后,只需对最后一个返回的 [object Object] 调用一次 [object Object],即可等待所有pending操作完成(类似shmem的quiet语义)。

wait成功后,所有已发出的 [object Object] 写入均已全部完成。

[object Object][object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]