从 [object Object] FIFO中弹出消费者tile,用于Cube-Vector通信。
本指令支持两类数据的弹出,分别为Tile类型的数据和GlobalTensor类型的数据。所以分别设计了基于[object Object] 重载和 [object Object] 重载。
对于TileData流程:
[object Object]将生产者tile存入当前FIFO槽位,并为消费者记录数据就绪同步。(注:Split为模板参数)生产者tile索引在槽位地址计算完成后递增。[object Object]等待生产者的数据就绪同步,将当前FIFO槽位加载到消费者tile中。消费者tile索引在槽位地址计算完成后递增。[object Object]释放FIFO中的槽位空间。Atlas A2/A3 训练系列产品/Atlas A2/A3 推理系列产品平台上此接口为空操作([object Object]已在内部执行空闲空间通知),Ascend 950PR/Ascend 950DT平台上会释放[object Object]使用的FIFO槽位空间。
对于GlobalData流程:
[object Object]从[object Object]中分配一个生产者FIFO槽位,并将其暴露为[object Object]视图。生产者可通过[object Object]等指令向该槽位写入数据。[object Object]为已经由[object Object]分配的槽位记录数据就绪同步,将FIFO槽位提交给消费者。它本身不会存储tile数据。[object Object]等待数据就绪,将[object Object]赋值为当前FIFO槽位地址,并递增消费者tile索引。它不会将数据加载到本地tile,也不会释放槽位。消费者可通过[object Object]等指令从槽位中读取数据。[object Object]释放由[object Object]返回的FIFO槽位视图,通知生产者该槽位空间已空闲。
声明位置:[object Object]:
[object Object]
[object Object] 通常是 [object Object] 或 [object Object] 中声明的 [object Object]:
[object Object]
- Atlas A2/A3 训练系列产品/Atlas A2/A3 推理系列产品TileData消费者:
[object Object]必须是[object Object]、[object Object]或[object Object]。[object Object]:vector消费cube生产的数据。[object Object]:cube消费vector生产的数据。[object Object]:同一个pipe类型同时支持C2V和V2C消费者。
- 本地消费者缓冲区:
- 对于C2V vector消费者,
[object Object]会将tile分配到[object Object],并使用本地FIFO轮转。 - 对于V2C matrix消费者,
[object Object]会将tile分配到[object Object],并使用本地FIFO轮转。
- 对于C2V vector消费者,
- 切分行为:
[object Object]:不进行切分,Atlas A2/A3 训练系列产品/Atlas A2/A3 推理系列产品上需要AIV0/AIV1陪跑核间同步操作。[object Object]:消费上下两个行半区。[object Object]:消费左右两个列半区。
- 同步:
- 每次
[object Object]都会执行数据就绪等待。 - 空闲空间通知是稀疏的,并由
[object Object]控制。
- 每次
- GlobalData槽位视图:
[object Object]会被赋值为由[object Object]选择的FIFO槽位基地址。- 对于C2V分裂模式,会根据
[object Object]应用向量子块偏移。 - 从槽位视图完成所有加载后,调用者必须调用
[object Object]。
[object Object]
[object Object]
[object Object]
当前公开的汇编参考尚未为 [object Object] 定义稳定的PTO-AS写法。手写CV FIFO程序时请使用C++ intrinsic形式。