---
title: TRACE_START
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendcopapi/atlasascendc_api_07_1212.html
sourcePath: /source/zh/canncommercial/900/API/ascendcopapi/atlasascendc_api_07_1212.html
indexId: b16d9327169c69912cd3e0d1dfaf6ae6241cb4f4d72db7ed5494a6c6ea876de076
---
# TRACE_START

#### 产品支持情况

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


#### 功能说明

通过CAModel进行算子性能仿真时，可对算子任意运行阶段打点，从而分析不同指令的流水图，以便进一步性能调优。

用于表示起始位置打点，一般与TRACE_STOP配套使用。

该功能主要用于调试和性能分析，开启后会对算子性能产生一定影响，通常在调测阶段使用，生产环境建议关闭。

默认情况下，该功能关闭，开发者可以按需通过如下方式开启打点功能。

修改Kernel直调工程cmake目录下的npu_lib.cmake文件，在ascendc_compile_definitions命令中增加-DASCENDC_TRACE_ON编译选项，来开启打点功能。示例如下：```
// 打开算子的打点功能
ascendc_compile_definitions(ascendc_kernels_${RUN_MODE} PRIVATE
    -DASCENDC_TRACE_ON
)
```


#### 函数原型

```
#define TRACE_START(TraceId apid)
#define TRACE_START(pipe_t pipe, TraceId apid) // 该接口仅支持Atlas 350 加速卡
```


#### 参数说明

| 参数名 | 输入/输出 | 描述 |
| --- | --- | --- |
| apid | 输入 | 当前预留了十个用户自定义的类型： 0x0：USER\_DEFINE\_0 0x1：USER\_DEFINE\_1 0x2：USER\_DEFINE\_2 0x3：USER\_DEFINE\_3 0x4：USER\_DEFINE\_4 0x5：USER\_DEFINE\_5 0x6：USER\_DEFINE\_6 0x7：USER\_DEFINE\_7 0x8：USER\_DEFINE\_8 0x9：USER\_DEFINE\_9 |
| pipe | 输入 | 指定打点所在的pipeline类型。 |


#### 返回值说明

无


#### 约束说明

- TRACE_START/TRACE_STOP需配套使用，若Trace图上未显示打点，则说明两者没有配对。
- 不支持跨核使用，例如TRACE_START在AI Cube打点，则TRACE_STOP打点也需要在AI Cube上，不能在AI Vector上。
- 宏支持所有的产品型号，但实际调用时需与调测工具支持的型号保持一致。
- 仅支持Kernel直调工程，不支持自定义算子工程下开启打点功能。


#### 调用示例

在Kernel代码中特定指令位置打上TRACE_START/TRACE_STOP：

```
TRACE_START(0x2);
Add(zLocal, xLocal, yLocal, dataSize);
TRACE_STOP(0x2);
```
