MCPcopy Create free account
hub / github.com/OAID/Tengine / SaveTmTensor

Method SaveTmTensor

serializer/tengine/v1/tm1_serializer.cpp:68–120  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

66}
67
68tm_uoffset_t TmSerializer1::SaveTmTensor(void* const start_ptr, tm_uoffset_t* cur_pos, Tensor* tensor,
69 unsigned int tensor_id, unsigned int buffer_id)
70{
71 TM_Tensor tm_tensor;
72 tm_tensor.tensor_id = tensor_id;
73 tm_tensor.buffer_id = buffer_id;
74 tm_tensor.type = tensor->GetType();
75
76 bool tm_with_string = IsSaveString();
77
78 if(tm_with_string)
79 {
80 std::string name = tensor->GetName();
81 TM_String tensor_name;
82 tensor_name.size = name.size();
83 tensor_name.offset_data = WriteTmFileAlign1(start_ptr, cur_pos, name.c_str(), tensor_name.size);
84 tm_tensor.offset_s_tname = WriteTmObject(start_ptr, cur_pos, &tensor_name, sizeof(TM_String));
85 }
86 else
87 tm_tensor.offset_s_tname = NOT_SET;
88
89 const std::string& data_type = DataType::GetTypeName(tensor->GetDataType());
90 if(data_type == "float32")
91 tm_tensor.data_type = TM_DT_FLOAT32;
92 else if(data_type == "float16")
93 tm_tensor.data_type = TM_DT_FLOAT16;
94 else if(data_type == "int")
95 tm_tensor.data_type = TM_DT_INT32;
96 else if(data_type == "int8")
97 tm_tensor.data_type = TM_DT_INT8;
98
99 /* Get the dims of the tensor */
100 TShape& shape = tensor->GetShape();
101 std::vector<int>& dim = shape.GetDim();
102 if(dim.size())
103 {
104 /* Write the vector of dims */
105 size_t vector_size = sizeof(tm_size_t) + sizeof(int32_t) * dim.size();
106 TM_Vector_dims* v_dims = ( TM_Vector_dims* )malloc(vector_size);
107 v_dims->v_num = dim.size();
108 for(unsigned int i = 0; i < dim.size(); i++)
109 {
110 v_dims->dims[i] = dim[i];
111 }
112 tm_tensor.offset_vd_dims = WriteTmObject(start_ptr, cur_pos, v_dims, vector_size);
113 free(v_dims);
114 }
115 else
116 tm_tensor.offset_vd_dims = NOT_SET;
117
118 /* Write the tensor */
119 return WriteTmObject(start_ptr, cur_pos, &tm_tensor, sizeof(TM_Tensor));
120}
121
122tm_uoffset_t TmSerializer1::SaveTmNode(void* const start_ptr, tm_uoffset_t* cur_pos, Node* node,
123 name_map_t& tensor_name_map)

Callers

nothing calls this directly

Calls 8

WriteTmFileAlign1Function · 0.85
WriteTmObjectFunction · 0.85
GetNameMethod · 0.80
GetDataTypeMethod · 0.80
GetTypeNameFunction · 0.50
GetTypeMethod · 0.45
sizeMethod · 0.45
c_strMethod · 0.45

Tested by

no test coverage detected