---
title: TPipe构造函数
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendcopapi/atlasascendc_api_07_0109.html
sourcePath: /source/zh/canncommercial/900/API/ascendcopapi/atlasascendc_api_07_0109.html
indexId: f16d2d32d088e58c6ddd8cc4f9b5211946f8c32317f85f38095f2f46bdaee27076
---
# TPipe构造函数

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 AI Core | √ |
| Atlas 推理系列产品 Vector Core | x |
| Atlas 训练系列产品 | √ |


#### 功能说明

构造用来管理内存和同步的TPipe对象。


#### 函数原型

```
__aicore__ inline TPipe()
```


#### 约束说明

- 避免TPipe在对象内创建和初始化，TPipe在对象内创建时，可能会影响编译器对对象内常量的优化，引起scalar性能劣化，具体原理请参考  避免TPipe在对象内创建和初始化(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/Ascendcopdevg/atlas_ascendc_best_practices_10_0028.html)
。
- TPipe对象同一时刻全局只能存在一份，同时定义多个TPipe对象，会出现卡死等随机行为。如果需要使用多个TPipe时，请先调用  Destroy
接口释放前一个TPipe。


#### 返回值说明

无


#### 调用示例

```
template <typename ComputeT> class KernelExample {
public:
    __aicore__ inline KernelExample() {}
    __aicore__ inline void Init(..., TPipe* pipeIn)
    {
        pipe = pipeIn;
        pipe->InitBuffer(xxxBuf, BUFFER_NUM, xxxSize);
    }
private:
    TPipe* pipe;
};
extern "C" __global__ __aicore__ void example_kernel(...) {
    TPipe pipe;
    KernelExample<float> op;
    op.Init(..., &pipe);
}
```
