已合并
fix: 修复random类算子example的编译和运行问题 #3167
xuejinghui创建于 6月8日
fix: 修复random类算子example的编译和运行问题 #3167
已合并
共 4 个文件变更+37-16
| @@ -31,7 +31,6 @@ | |||
| 31 | 31 | ||
| 32 | 32 | ||
| 33 | 33 | ||
| 34 | |||
| 35 | 34 | ||
| 36 | 35 | ||
| 37 | 36 | ||
| @@ -127,6 +126,7 @@ int32_t GenOnesDataFloat32(vector<int64_t> shapes, Tensor& input_tensor, TensorD | |||
| 127 | *(pData + i) = value; | 126 | *(pData + i) = value; |
| 128 | } | 127 | } |
| 129 | input_tensor = Tensor(input_tensor_desc, (uint8_t*)pData, data_len); | 128 | input_tensor = Tensor(input_tensor_desc, (uint8_t*)pData, data_len); |
| 129 | delete[] pData; | ||
| 130 | return SUCCESS; | 130 | return SUCCESS; |
| 131 | } | 131 | } |
| 132 | 132 | ||
| @@ -139,11 +139,12 @@ int32_t GenOnesData( | |||
| 139 | size *= shapes[i]; | 139 | size *= shapes[i]; |
| 140 | } | 140 | } |
| 141 | uint32_t data_len = size * GetDataTypeSize(data_type); | 141 | uint32_t data_len = size * GetDataTypeSize(data_type); |
| 142 | int32_t* pData = new (std::nothrow) int32_t[data_len]; | 142 | int64_t *pData = new (std::nothrow) int64_t[size]; |
D | |||
| 143 | for (uint32_t i = 0; i < size; ++i) { | 143 | for (uint32_t i = 0; i < size; ++i) { |
| 144 | *(pData + i) = value; | 144 | pData[i] = static_cast<int64_t>(value); |
| 145 | } | 145 | } |
| 146 | input_tensor = Tensor(input_tensor_desc, reinterpret_cast<uint8_t*>(pData), data_len); | 146 | input_tensor = Tensor(input_tensor_desc, reinterpret_cast<uint8_t *>(pData), data_len); |
| 147 | delete[] pData; | ||
| 147 | return SUCCESS; | 148 | return SUCCESS; |
| 148 | } | 149 | } |
| 149 | 150 | ||
| @@ -165,9 +166,26 @@ int CreateOppInGraph( | |||
| 165 | std::vector<int64_t> xShape = {32}; | 166 | std::vector<int64_t> xShape = {32}; |
| 166 | std::vector<int64_t> maskShape = {128}; | 167 | std::vector<int64_t> maskShape = {128}; |
| 167 | std::vector<int64_t> keep_prob_shape = {1}; | 168 | std::vector<int64_t> keep_prob_shape = {1}; |
| 168 | ADD_INPUT(1, x, inDtype, xShape); | 169 | ADD_INPUT(1, x, ge::DT_FLOAT, xShape); |
| 169 | ADD_INPUT(2, mask, inDtype, maskShape); | 170 | { |
| 170 | ADD_INPUT(3, keep_prob, inDtype, keep_prob_shape); | 171 | auto placeholder2 = op::Data("placeholder2").set_attr_index(0); |
| 172 | TensorDesc desc2(ge::Shape(maskShape), FORMAT_ND, ge::DT_UINT8); | ||
| 173 | desc2.SetPlacement(ge::kPlacementHost); | ||
| 174 | desc2.SetFormat(FORMAT_ND); | ||
| 175 | uint8_t *mask_data = new (std::nothrow) uint8_t[128]; | ||
| 176 | memset(mask_data, 1, 128); | ||
| 177 | Tensor tensor2(desc2, mask_data, 128); | ||
| 178 | delete[] mask_data; | ||
| 179 | placeholder2.update_input_desc_x(desc2); | ||
| 180 | placeholder2.update_output_desc_y(desc2); | ||
| 181 | input.push_back(tensor2); | ||
| 182 | graph.AddOp(placeholder2); | ||
| 183 | dropoutdomaskv3.set_input_mask(placeholder2); | ||
| 184 | inputs.push_back(placeholder2); | ||
| 185 | } | ||
| 186 | ADD_INPUT(3, keep_prob, ge::DT_FLOAT, keep_prob_shape); | ||
| 187 | float keep_prob_val = 0.5f; | ||
| 188 | memcpy(input.back().GetData(), &keep_prob_val, sizeof(float)); | ||
| 171 | outputs.push_back(dropoutdomaskv3); | 189 | outputs.push_back(dropoutdomaskv3); |
| 172 | // 添加完毕 | 190 | // 添加完毕 |
| 173 | return SUCCESS; | 191 | return SUCCESS; |
| @@ -26,7 +26,6 @@ | |||
| 26 | 26 | ||
| 27 | 27 | ||
| 28 | 28 | ||
| 29 | |||
| 30 | 29 | ||
| 31 | 30 | ||
| 32 | 31 | ||
| @@ -175,6 +174,7 @@ int32_t GenOnesDataFloat32(vector<int64_t> shapes, Tensor &input_tensor, TensorD | |||
| 175 | *(pData + i) = value; | 174 | *(pData + i) = value; |
| 176 | } | 175 | } |
| 177 | input_tensor = Tensor(input_tensor_desc, (uint8_t *)pData, data_len); | 176 | input_tensor = Tensor(input_tensor_desc, (uint8_t *)pData, data_len); |
| 177 | delete[] pData; | ||
| 178 | return SUCCESS; | 178 | return SUCCESS; |
| 179 | } | 179 | } |
| 180 | 180 | ||
| @@ -187,11 +187,12 @@ int32_t GenOnesData( | |||
| 187 | size *= shapes[i]; | 187 | size *= shapes[i]; |
| 188 | } | 188 | } |
| 189 | uint32_t data_len = size * GetDataTypeSize(data_type); | 189 | uint32_t data_len = size * GetDataTypeSize(data_type); |
| 190 | int32_t *pData = new (std::nothrow) int32_t[data_len]; | 190 | int64_t *pData = new (std::nothrow) int64_t[size]; |
| 191 | for (uint32_t i = 0; i < size; ++i) { | 191 | for (uint32_t i = 0; i < size; ++i) { |
| 192 | *(pData + i) = value; | 192 | pData[i] = static_cast<int64_t>(value); |
| 193 | } | 193 | } |
| 194 | input_tensor = Tensor(input_tensor_desc, reinterpret_cast<uint8_t *>(pData), data_len); | 194 | input_tensor = Tensor(input_tensor_desc, reinterpret_cast<uint8_t *>(pData), data_len); |
| 195 | delete[] pData; | ||
| 195 | return SUCCESS; | 196 | return SUCCESS; |
| 196 | } | 197 | } |
| 197 | 198 | ||
| @@ -26,7 +26,6 @@ | |||
| 26 | 26 | ||
| 27 | 27 | ||
| 28 | 28 | ||
| 29 | |||
| 30 | 29 | ||
| 31 | 30 | ||
| 32 | 31 | ||
| @@ -169,6 +168,7 @@ int32_t GenOnesDataFloat32(vector<int64_t> shapes, Tensor &input_tensor, TensorD | |||
| 169 | *(pData + i) = value; | 168 | *(pData + i) = value; |
| 170 | } | 169 | } |
| 171 | input_tensor = Tensor(input_tensor_desc, (uint8_t *)pData, data_len); | 170 | input_tensor = Tensor(input_tensor_desc, (uint8_t *)pData, data_len); |
| 171 | delete[] pData; | ||
| 172 | return SUCCESS; | 172 | return SUCCESS; |
| 173 | } | 173 | } |
| 174 | 174 | ||
| @@ -181,11 +181,12 @@ int32_t GenOnesData( | |||
| 181 | size *= shapes[i]; | 181 | size *= shapes[i]; |
| 182 | } | 182 | } |
| 183 | uint32_t data_len = size * GetDataTypeSize(data_type); | 183 | uint32_t data_len = size * GetDataTypeSize(data_type); |
| 184 | int32_t *pData = new (std::nothrow) int32_t[data_len]; | 184 | int64_t *pData = new (std::nothrow) int64_t[size]; |
| 185 | for (uint32_t i = 0; i < size; ++i) { | 185 | for (uint32_t i = 0; i < size; ++i) { |
| 186 | *(pData + i) = value; | 186 | pData[i] = static_cast<int64_t>(value); |
| 187 | } | 187 | } |
| 188 | input_tensor = Tensor(input_tensor_desc, reinterpret_cast<uint8_t *>(pData), data_len); | 188 | input_tensor = Tensor(input_tensor_desc, reinterpret_cast<uint8_t *>(pData), data_len); |
| 189 | delete[] pData; | ||
| 189 | return SUCCESS; | 190 | return SUCCESS; |
| 190 | } | 191 | } |
| 191 | 192 | ||
| @@ -26,7 +26,6 @@ | |||
| 26 | 26 | ||
| 27 | 27 | ||
| 28 | 28 | ||
| 29 | |||
| 30 | 29 | ||
| 31 | 30 | ||
| 32 | 31 | ||
| @@ -175,6 +174,7 @@ int32_t GenOnesDataFloat32(vector<int64_t> shapes, Tensor &input_tensor, TensorD | |||
| 175 | *(pData + i) = value; | 174 | *(pData + i) = value; |
| 176 | } | 175 | } |
| 177 | input_tensor = Tensor(input_tensor_desc, (uint8_t *)pData, data_len); | 176 | input_tensor = Tensor(input_tensor_desc, (uint8_t *)pData, data_len); |
| 177 | delete[] pData; | ||
| 178 | return SUCCESS; | 178 | return SUCCESS; |
| 179 | } | 179 | } |
| 180 | 180 | ||
| @@ -187,11 +187,12 @@ int32_t GenOnesData( | |||
| 187 | size *= shapes[i]; | 187 | size *= shapes[i]; |
| 188 | } | 188 | } |
| 189 | uint32_t data_len = size * GetDataTypeSize(data_type); | 189 | uint32_t data_len = size * GetDataTypeSize(data_type); |
| 190 | int32_t *pData = new (std::nothrow) int32_t[data_len]; | 190 | int64_t *pData = new (std::nothrow) int64_t[size]; |
| 191 | for (uint32_t i = 0; i < size; ++i) { | 191 | for (uint32_t i = 0; i < size; ++i) { |
| 192 | *(pData + i) = value; | 192 | pData[i] = static_cast<int64_t>(value); |
| 193 | } | 193 | } |
| 194 | input_tensor = Tensor(input_tensor_desc, reinterpret_cast<uint8_t *>(pData), data_len); | 194 | input_tensor = Tensor(input_tensor_desc, reinterpret_cast<uint8_t *>(pData), data_len); |
| 195 | delete[] pData; | ||
| 195 | return SUCCESS; | 196 | return SUCCESS; |
| 196 | } | 197 | } |
| 197 | 198 | ||


分配内存后未delete回收,确定是否存在内存泄漏问题