DeQue
Function Usage
Extracts tensors from the queue for subsequent processing.
Prototype
- The source and destination locations do not need to be specified.
1 2
template <typename T> __aicore__ inline LocalTensor<T> DeQue()
- The source and destination locations need to be specified.
Bind VECIN and VECOUT by using TQueBind to implement VECIN and VECOUT buffer reuse. The following API is used to implement buffer reuse for vector computation. The source and destination locations need to be specified during dequeuing. In the scenario where vector computation is not involved, call LocalTensor<T> DeQue().
1 2
template <TPosition srcUserPos, TPosition dstUserPos, typename T> __aicore__ inline LocalTensor<T> DeQue()
Figure 1 Using EnQue and DeQue to move LocalTensor into and out from the A1/B1 queue


Parameters
None
Availability
Precautions
None
Returns
LocalTensor obtained from the queue.
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | // API: DeQue Tensor AscendC::TPipe pipe; AscendC::TQue<AscendC::TPosition::VECOUT, 4> que; int num = 4; int len = 1024; pipe.InitBuffer(que, num, len); AscendC::LocalTensor<half> tensor1 = que.AllocTensor<half>(); que.EnQue(tensor1); AscendC::LocalTensor<half> tensor2 = que.DeQue<half>(); // Move a tensor out of the VECOUT queue. // API: DeQue Tensor, specifying a specific src/dst position AscendC::TPipe pipe; AscendC::TQueBind<AscendC::QuePosition::VECIN, AscendC::QuePosition::VECOUT, 1> que; int num = 4; int len = 1024; pipe.InitBuffer(que, num, len); AscendC::LocalTensor<half> tensor1 = que.AllocTensor<half>(); que.EnQue<AscendC::QuePosition::GM, AscendC::QuePosition::VECIN, half>(tensor1); // Move a tensor out of the VECIN queue. AscendC::LocalTensor<half> tensor2 = que.DeQue<AscendC::QuePosition::GM, AscendC::QuePosition::VECIN, half>(); |
Parent topic: TQue