HasIdleBuffer

Applicability

Product

Supported

Atlas 350 Accelerator Card

Atlas A3 training product / Atlas A3 inference product

Atlas A2 training product / Atlas A2 inference product

Atlas 200I/500 A2 inference product

Atlas inference product AI Core

Atlas inference product Vector Core

x

Atlas training product

Function Usage

Queries whether there are free buffers in the queue.

Prototype

1
__aicore__ inline bool HasIdleBuffer()

Parameters

None

Constraints

This API does not support inplace tensor operations. This means depth of TQue is set to 0.

Returns

  • true: indicates that free memory exists in the queue.
  • false: No free memory exists in the queue.

Example

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
// Four buffers have been allocated in the current queue.
AscendC::TPipe pipe;
AscendC::TQue<AscendC::TPosition::VECOUT, 1> que;
int num = 4;
int len = 1024;
pipe.InitBuffer(que, num, len);
bool ret = que.HasIdleBuffer(); // AllocTensor is not called, and the return is true.
AscendC::LocalTensor<half> tensor1 = que.AllocTensor<half>();
ret = que.HasIdleBuffer(); // One buffer has been allocated by AllocTensor, and the return is true.
AscendC::LocalTensor<half> tensor2 = que.AllocTensor<half>();
AscendC::LocalTensor<half> tensor3 = que.AllocTensor<half>();
AscendC::LocalTensor<half> tensor4 = que.AllocTensor<half>();
ret = que.HasIdleBuffer(); // Four buffers have been allocated by AllocTensor. Currently, there is no idle buffer, and the return is false. An error is reported when AllocTensor is called.