AppendConvertedAttrVal
函数功能
将RuntimeAttrs内存中的第index个属性,从src_type数据类型转成dst_type数据类型后,追加在当前的tilingdata后面。
函数原型
ge::graphStatus AppendConvertedAttrVal(const RuntimeAttrs *attrs, const size_t attr_index, const AttrDataType src_type, const AttrDataType dst_type)
参数说明
| 参数 | 输入/输出 | 说明 | 
|---|---|---|
| attrs | 输入 | 图执行时的属性。 | 
| attr_index | 输入 | 属性的序号。 | 
| src_type | 输入 | 属性的原始dtype。AttrDataType类型,具体定义如下: enum class AttrDataType : int32_t {
  kBool = 0,
  kString,
  kInt32,
  kInt64,
  kUint32,
  kFloat32,
  kFloat16,
  kListBool,
  kListString,
  kListInt32,
  kListInt64,
  kListUint32,
  kListFloat32,
  kListFloat16,
  kListListInt32,
  kListListInt64,
  kBfloat16,
  kInt8,
  kInt16,
  kListInt8,
  kListInt16,
  kTypeEnd
};src_type和dst_type支持的取值范围和对应关系见表2。 | 
| dst_type | 输入 | 属性的目标dtype。 src_type和dst_type支持的取值范围和对应关系见表2。 | 
| src_type | dst_type | 
|---|---|
| kInt64 | kInt32、kUint32 | 
| kListInt64 | kListInt32、kListUint32 | 
| kInt32 | kInt32 | 
| kListInt32 | kListInt32 | 
| kFloat32 | kFloat32、kFloat16、kBfloat16、kInt64、kInt32、kInt16、kInt8 | 
| kListFloat32 | kListFloat32、kListFloat16、kListInt64、kListInt32、kListInt16、kListInt8 | 
| kBool | kBool | 
| kString | kString | 
返回值说明
- 成功返回:ge::GRAPH_SUCCESS。
- 失败返回:ge::GRAPH_FAILED。
约束说明
无。
调用示例
auto td_buf = TilingData::CreateCap(100U);
auto td = reinterpret_cast<TilingData *>(td_buf.get());
auto holder = BuildTestContext();
auto context = holder.GetContext<TilingContext>();
auto ret = td->AppendConvertedAttrVal(context->GetAttrs(), 1, AttrDataType::kString, AttrDataType::kString)
FakeKernelContextHolder BuildTestContext() {
  auto holder = gert::KernelRunContextFaker()
                    .NodeIoNum(1, 1)
                    .IrInputNum(1)
                    .NodeInputTd(0, ge::DT_FLOAT16, ge::FORMAT_ND, ge::FORMAT_ND)
                    .NodeOutputTd(0, ge::DT_FLOAT16, ge::FORMAT_ND, ge::FORMAT_FRACTAL_NZ)
                    .NodeAttrs({{"int", ge::AnyValue::CreateFrom<int64_t>(0x7fffffffUL)},
                                {"str", ge::AnyValue::CreateFrom<std::string>("Hello!")},
                                {"bool", ge::AnyValue::CreateFrom<bool>(true)},
                                {"float", ge::AnyValue::CreateFrom<float>(10.101)},
                                {"list_int", ge::AnyValue::CreateFrom<std::vector<int64_t>>({1, 2, 3})},
                                {"list_int2", ge::AnyValue::CreateFrom<std::vector<int64_t>>({4, 5, 6})},
                                {"list_float", ge::AnyValue::CreateFrom<std::vector<float>>({1.2, 3.4, 4.5})}})
                    .Build();
  return holder;
}
父主题: TilingData