信号同步指令详解TNOTIFY / TWAIT / TTEST【免费下载链接】pto-isaParallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend platforms.项目地址: https://gitcode.com/cann/pto-isaTNOTIFY — 发送信号通知向远端 NPU 发送标志通知用于轻量级同步。template typename GlobalSignalData, typename... WaitEvents void TNOTIFY(GlobalSignalData dstSignalData, int32_t value, NotifyOp op, WaitEvents... events);约束GlobalSignalData::DType必须为int32_tdstSignalData必须指向远端地址目标 NPUdstSignalData应 4 字节对齐NotifyOp::Set执行直接存储NotifyOp::AtomicAdd使用硬件原子加指令示例// 直接赋值通知 comm::Signal sig(remote_signal); comm::TNOTIFY(sig, 1, comm::NotifyOp::Set); // 原子计数器自增 comm::Signal counter(remote_counter); comm::TNOTIFY(counter, 1, comm::NotifyOp::AtomicAdd);重要TNOTIFY 发送到远端地址TWAIT/TTEST 检测本地地址。成对使用时需注意地址方向。TWAIT — 阻塞等待信号阻塞等待直到信号满足比较条件。template typename GlobalSignalData, typename... WaitEvents void TWAIT(GlobalSignalData signalData, int32_t cmpValue, WaitCmp cmp, WaitEvents... events);约束GlobalSignalData::DType必须为int32_tsignalData必须指向本地地址当前 NPU支持单个信号和多维信号 tensor最高 5 维对于 tensor所有信号必须满足条件才会返回示例// 等待单个信号 comm::Signal sig(local_signal); comm::TWAIT(sig, 1, comm::WaitCmp::EQ); // 等待信号矩阵4×8 网格所有元素 1 comm::Signal2D4, 8 grid(signal_matrix); comm::TWAIT(grid, 1, comm::WaitCmp::GE); // 等待计数器达到阈值 comm::TWAIT(counter, expected_count, comm::WaitCmp::GE);TTEST — 非阻塞信号检测非阻塞检测信号条件返回bool。template typename GlobalSignalData, typename... WaitEvents bool TTEST(GlobalSignalData signalData, int32_t cmpValue, WaitCmp cmp, WaitEvents... events);约束与 TWAIT 相同但不阻塞。示例// 非阻塞检测 bool ready comm::TTEST(sig, 1, comm::WaitCmp::EQ); // 带超时的轮询 for (int i 0; i max_iters; i) { if (comm::TTEST(sig, 1, comm::WaitCmp::EQ)) { break; } }TWAIT vs TTEST 选择指南场景推荐原因确定必须等待barrierTWAIT硬件自旋更节能等待期间需执行其他工作TTEST可交错执行需要超时控制TTEST可设循环上限就绪队列消费TTEST先检查再处理【免费下载链接】pto-isaParallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend platforms.项目地址: https://gitcode.com/cann/pto-isa创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考