AicpuTaskSpace类
AicpuTaskSpace类用于管理AI CPU task复用相关的逻辑,包括新建task、查找task等功能。
具体定义如下:
class AicpuTaskSpace {
public:
// 需要设置第几类动态shape算子,Tensorflow or CANN,默认设置为CANN第一类算子
AicpuTaskSpace(const std::string &opType,
const ge::UnknowShapeOpType unknownType = ge::DEPEND_IN_SHAPE,
const bool isTf = false)
: opType_(opType), unknownType_(unknownType), isTf_(isTf) {}
AicpuTask *FindTask(aclOpExecutor *executor, op::OpArgContext *args,
const FVector<const aclTensor *> &inputs);
AicpuTask *GetOrCreateTask(aclOpExecutor *executor, const FVector<std::string> &attrNames,
op::OpArgContext *args);
void SetRef(const size_t index, const bool isInput = true);
bool IsRef(const size_t index, const bool isInput = true) const;
uint64_t CalcHostInputDataSize(const FVector<const aclTensor *> &inputs, size_t alignBytes) const;
uint64_t CalcDeviceCacheSize(const FVector<const aclTensor *> &inputs,
std::unique_ptr<AicpuTask> &aicpuTask) const;
void Clear()
{
hashMap_.clear();
}
friend class AicpuTask;
private:
static constexpr uint64_t kHashSeed = 0x9e3779b9U;
static size_t GenHashBinary(const uint8_t *addr, uint32_t len);
size_t GenTaskKey(uint8_t inputKey[], size_t &keyLen, op::OpArgContext *args,
const FVector<const aclTensor *> &inputs) const;
const std::string opType_;
const ge::UnknowShapeOpType unknownType_;
const bool isTf_;
bool hasInit_ = false;
std::set<size_t> inputRefIndexes_;
std::set<size_t> outputRefIndexes_;
std::mutex mutex_;
using HashMap = std::unordered_map<size_t, std::vector<std::unique_ptr<AicpuTask>>>;
HashMap hashMap_;
};
关于类中成员的详细说明请参见表1。
属性名 |
属性类型 |
默认值 |
属性说明 |
|---|---|---|---|
kHashSeed |
const std::string |
"" |
存储task的map的哈希表的键值种子。 |
opType_ |
const ge::UnknownShapeOpType |
0 |
算子名称。 |
unknownType_ |
std::unique_ptr<AicpuArgsHandler> |
null |
标识是几类算子。 |
isTf_ |
std::unique_ptr<AicpuExtInfoHandler> |
false |
标识是执行第三方算子框架还是CANN算子框架。
|
hasInit_ |
uint64_t |
0 |
标识task是否被初始化。 |
inputRefIndexes_ |
uint64_t |
0 |
标识输入是否为ref类。 |
outputRefIndexes_ |
void* |
null |
标识输出是否为ref类。 |
mutex_ |
FVector<const aclTensor *> |
null |
task map的锁。 |
hashMap_ |
FVector<const aclTensor *> |
null |
存储task的hash表。 |
父主题: aicpu相关接口