---
title: AicpuTask类
description: "AicpuTask类用于管理AI CPU task相关的一些参数和方法，包括组装task、task初始化、task下发、task执行等功能。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/aolapi/atlasascendc_api_07_1162.html
sourcePath: /source/zh/canncommercial/900/API/aolapi/atlasascendc_api_07_1162.html
indexId: 163bd57c7ba64a19a1cb14430862052cb7ec2d74b95ea6a2b62f5ae2b0659d9570
---
# AicpuTask类

AicpuTask类用于管理AI CPU task相关的一些参数和方法，包括组装task、task初始化、task下发、task执行等功能。

具体定义如下：```
class AicpuTask {
public:
    AicpuTask(const std::string &opType, const ge::UnknowShapeOpType unknownType)
        : opType_(opType), unknownType_(unknownType) {}
    virtual ~AicpuTask() = default;
    virtual aclnnStatus Init(const FVector<const aclTensor *> &inputs, const FVector<aclTensor *> &outputs,
                             const AicpuAttrs &attrs) = 0;
    virtual aclnnStatus Run(aclOpExecutor *executor, aclrtStream stream) = 0;
    aclnnStatus SetIoTensors(aclOpExecutor *executor, op::OpArgContext *args);
    friend class AicpuTaskSpace;
    void SetSpace(void *space)
    {
        space_ = space;
    }
    void SetVisit(bool visit);
protected:
    const std::string opType_;
    const ge::UnknowShapeOpType unknownType_;
    std::unique_ptr<AicpuArgsHandler> argsHandle_;
    std::unique_ptr<AicpuExtInfoHandler> extInfoHandle_;
    uint64_t launchId_ = 0U;
    uint64_t summaryItemId_ = 0U;
    void *space_ = nullptr;
    FVector<const aclTensor *> inputs_;
    FVector<aclTensor *> outputs_;
    // 长度可能不够，后续考虑长度可扩展
    uint8_t inputKey_[kAicpuKeyBufLen] = {};
    size_t keyLen_ = 0;
    bool isVisit_ = false;
    uint64_t deviceExtMemSize_ = 0;
    uint64_t deviceCacheOffset_ = 0;
};
```


关于类中成员的详细说明请参见表1。


**表1 AicpuTask类成员说明**

| 属性名 | 属性类型 | 默认值 | 属性说明 |
| --- | --- | --- | --- |
| opType\_ | const std::string | "" | Task对应的AI CPU算子名。 |
| UnknownType\_ | const ge::UnknowShapeOpType | 0 | 标识算子shape是基类，具体类型UnknowShapeOpType。 |
| argsHandle\_ | std::unique\_ptr<AicpuArgsHandler> | null | 管理task封装参数的对象。 |
| extInfoHandle\_ | std::unique\_ptr<AicpuExtInfoHandler> | null | 管理task封装拓展参数的对象。 |
| launchId\_ | uint64\_t | 0 | 用于profiling采集的任务下发id。 |
| summaryItemId\_ | uint64\_t | 0 | 用于统计条目的id。 |
| space\_ | void\* | null | 记录task属于哪个task管理集合。 |
| inputs\_ | FVector<const aclTensor \*> | null | task对应算子的输入tensor指针列表。 |
| outputs\_ | FVector<const aclTensor \*> | null | task对应算子的输出tensor指针列表。 |
| inputKey\_ | uint8\_t [kAicpuKeyBufLen] | 0 | task对应的key字段。 |
| keyLen\_ | size\_t | 0 | key字段长度。 |
| isVisit\_ | bool | false | 当前task是否正被使用。 |
| deviceExtMemSize\_ | uint64\_t | 0 | device侧预留的内存。 |
| deviceCacheOffset\_ | uint64\_t | 0 | device侧预留内存的偏移。 |
