AllocTensor
产品支持情况
产品 |
是否支持 |
---|---|
√ |
|
√ |
|
√ |
|
√ |
|
x |
|
√ |
|
x |
功能说明
从Que中分配Tensor,Tensor所占大小为InitBuffer时设置的每块内存长度。注意,分配的Tensor内容并非全0,可能会是随机值。
函数原型
- non-inplace接口:构造新的Tensor作为内存分配的对象
1 2
template <typename T> __aicore__ inline LocalTensor<T> AllocTensor()
- inplace接口:直接使用传入的Tensor作为内存分配的对象
1 2
template <typename T> __aicore__ inline void AllocTensor(LocalTensor<T>& tensor)
参数说明
参数名 |
说明 |
---|---|
T |
Tensor的数据类型。 |
约束说明
- TQue的depth设置为非0时,只支持non-inplace接口
- TQue的depth设置为0时,只支持inplace接口
返回值
non-inplace接口返回值为LocalTensor对象,inplace接口没有返回值。
调用示例
- non-inplace接口
1 2 3 4 5 6 7
// 使用AllocTensor分配Tensor AscendC::TPipe pipe; AscendC::TQueBind<AscendC::TPosition::VECOUT, AscendC::TPosition::GM, 2> que; int num = 4; int len = 1024; pipe.InitBuffer(que, num, len); // InitBuffer分配内存块数为4,每块大小为1024Bytes AscendC::LocalTensor<half> tensor1 = que.AllocTensor<half>(); // AllocTensor分配Tensor长度为1024Bytes
- inplace接口
1 2 3 4 5 6 7 8
// 使用AllocTensor分配Tensor AscendC::TPipe pipe; AscendC::TQueBind<AscendC::TPosition::VECOUT, AscendC::TPosition::GM, 0> que; int num = 2; int len = 1024; pipe.InitBuffer(que, num, len); // InitBuffer分配内存块数为2,每块大小为1024Bytes AscendC::LocalTensor<half> tensor1; que.AllocTensor<half>(tensor1); // AllocTensor分配Tensor长度为1024Bytes
父主题: TQueBind