已合并
fix: 修复random类算子example的编译和运行问题 #3167
xuejinghui创建于 6月8日
fix: 修复random类算子example的编译和运行问题 #3167
已合并
xuejinghui创建于 6月8日
4 个文件变更+37-16
Mrandom/drop_out_do_mask_v3/examples/test_geir_drop_out_do_mask_v3.cpp+25-7
@@ -31,7 +31,6 @@
31#include "array_ops.h"31#include "array_ops.h"
32#include "ge_ir_build.h"32#include "ge_ir_build.h"
33 33 
34#include "experiment_ops.h"
35#include "nn_other.h"34#include "nn_other.h"
36#include "../op_graph/drop_out_do_mask_v3_proto.h"35#include "../op_graph/drop_out_do_mask_v3_proto.h"
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
DDaiHuina16月8日

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

likedislike
xuejinghui
6月9日 评论:
likedislike
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];
D
DDaiHuina16月8日

分配内存后未释放,内存溢出风险

likedislike
xuejinghui
6月9日 评论:
likedislike
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;
Mrandom/random_standard_normal_v2/examples/test_geir_random_standard_normal_v2.cpp+4-3
@@ -26,7 +26,6 @@
26#include "array_ops.h"26#include "array_ops.h"
27#include "ge_ir_build.h"27#include "ge_ir_build.h"
28 28 
29#include "experiment_ops.h"
30#include "nn_other.h"29#include "nn_other.h"
31#include "../op_graph/random_standard_normal_v2_proto.h"30#include "../op_graph/random_standard_normal_v2_proto.h"
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 
Mrandom/random_uniform_int_v2/examples/test_geir_random_uniform_int_v2.cpp+4-3
@@ -26,7 +26,6 @@
26#include "array_ops.h"26#include "array_ops.h"
27#include "ge_ir_build.h"27#include "ge_ir_build.h"
28 28 
29#include "experiment_ops.h"
30#include "nn_other.h"29#include "nn_other.h"
31#include "../op_graph/random_uniform_int_v2_proto.h"30#include "../op_graph/random_uniform_int_v2_proto.h"
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 
Mrandom/truncated_normal_v2/examples/test_geir_truncated_normal_v2.cpp+4-3
@@ -26,7 +26,6 @@
26#include "array_ops.h"26#include "array_ops.h"
27#include "ge_ir_build.h"27#include "ge_ir_build.h"
28 28 
29#include "experiment_ops.h"
30#include "nn_other.h"29#include "nn_other.h"
31#include "../op_graph/truncated_normal_v2_proto.h"30#include "../op_graph/truncated_normal_v2_proto.h"
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