# 简介

TQueBind绑定源逻辑位置和目的逻辑位置，根据源位置和目的位置，来确定内存分配的位置、插入对应的同步事件，帮助开发者解决内存分配和管理、同步等问题。TQue是TQueBind的简化模式。通常情况下开发者使用TQue进行编程，TQueBind对外提供一些特殊数据通路的内存管理和同步控制，涉及这些通路时可以直接使用TQueBind。

如下图的数据通路示意图所示，红色线条和蓝色线条的通路可通过TQueBind定义表达，蓝色线条的通路可通过TQue进行简化表达。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/df/v3/LYLpLGxmTk6d22R-D2mx2w/zh-cn_image_0000002794411841.png?HW-CC-KV=V1&HW-CC-Date=20261015T104514Z&HW-CC-Expire=31536000000&HW-CC-Sign=53286CB6E4CCE8ADE3A8B44BB7579217CB8779CF29B09C99D9D2A2B1A2CE958D)

**表1** TQueBind和TQue对于数据通路的表达

|数据通路|TQueBind定义|TQue定义|
|:---------------|:------------------------------------------------------------------------------------------------------------------------------------------|:-------------------------|
|GM->VECIN|TQueBind<TPosition::GM, TPosition::VECIN, 1>|TQue<TPosition::VECIN, 1>|
|VECOUT->GM|TQueBind<TPosition::VECOUT, TPosition::GM, 1>|TQue<TPosition::VECOUT, 1>|
|VECIN->VECOUT|TQueBind<TPosition::VECIN, TPosition::VECOUT, 1>|-|
|GM->A1|TQueBind<TPosition::GM, TPosition::A1, 1>|TQue<TPosition::A1, 1>|
|GM->B1|TQueBind<TPosition::GM, TPosition::B1, 1>|TQue<TPosition::B1, 1>|
|GM->C1|TQueBind<TPosition::GM, TPosition::C1, 1>|TQue<TPosition::C1, 1>|
|A1->A2|TQueBind<TPosition::A1, TPosition::A2, 1>|TQue<TPosition::A2, 1>|
|B1->B2|TQueBind<TPosition::B1, TPosition::B2, 1>|TQue<TPosition::B2, 1>|
|C1->C2|TQueBind<TPosition::C1, TPosition::C2, 1>|TQue<TPosition::C2, 1>|
|CO1->CO2|TQueBind<TPosition::CO1, TPosition::CO2, 1>|TQue<TPosition::CO1, 1>|
|CO2->GM|TQueBind<TPosition::CO2, TPosition::GM, 1>|TQue<TPosition::CO2, 1>|
|VECOUT->A1/B1/C1|TQueBind<TPosition::VECOUT, TPosition::A1, 1>; TQueBind<TPosition::VECOUT, TPosition::B1, 1>; TQueBind<TPosition::VECOUT, TPosition::C1, 1>|-|
|CO2->VECIN|TQueBind<TPosition::CO2, TPosition::VECIN, 1>|-|

> 说明
>
> 上述表格中的Cube相关数据通路建议使用Cube高阶API（如Matmul）实现，直接使用TQueBind控制会相对复杂。

下面通过两个具体的示例展示了矢量编程场景下TQueBind的使用方法：

* 如下的编程范式示例，图中的两个队列分别绑定的是GM VECIN和VECOUT GM。

  ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/80/v3/1EHzHfCvScyEHNvfYez8TA/zh-cn_image_0000002764973122.png?HW-CC-KV=V1&HW-CC-Date=20261015T104514Z&HW-CC-Expire=31536000000&HW-CC-Sign=0EFECC823223416F4DDE8A5501C271C92AF7DA2BCC7FEEB1F673D9B6A6ABFC72)
* 如果不需要进行Vector计算，比如仅需要做格式随路转换等场景，可对上述流程进行优化，对VECIN和VECOUT进行绑定，绑定的效果可以实现输入输出使用相同buffer，实现double buffer。

  ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/db/v3/VOLKxAdmSqyYMh2zXVwMkg/zh-cn_image_0000002765133042.png?HW-CC-KV=V1&HW-CC-Date=20261015T104514Z&HW-CC-Expire=31536000000&HW-CC-Sign=440439829DE5AC2F45C5FCA79B5F496495E7814CC05615BE434C5F635A1E899A)

