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。
属性名 |
属性类型 |
默认值 |
属性说明 |
|---|---|---|---|
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侧预留内存的偏移。 |