| 66 | } |
| 67 | |
| 68 | tm_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 | |
| 122 | tm_uoffset_t TmSerializer1::SaveTmNode(void* const start_ptr, tm_uoffset_t* cur_pos, Node* node, |
| 123 | name_map_t& tensor_name_map) |
nothing calls this directly
no test coverage detected