MCPcopy Create free account
hub / github.com/alibaba/MNN / _countForTensorValid

Function _countForTensorValid

tools/cpp/ExprDebug.hpp:238–275  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

236}
237
238static std::pair<bool, std::tuple<float, float, float>> _countForTensorValid(MNN::Tensor* ntensor) {
239 bool valid = false;
240 std::tuple<float, float, float> res;
241 if (ntensor->elementSize() <= 0) {
242 return std::make_pair(valid, res);
243 }
244 bool validforType = false;
245 if (ntensor->getType().code == halide_type_float || ntensor->getType().code == halide_type_int || ntensor->getType().code == halide_type_uint) {
246 validforType = true;
247 }
248 if (!validforType) {
249 return std::make_pair(valid, res);
250 }
251 valid = true;
252 auto outDimType = ntensor->getDimensionType();
253 std::shared_ptr<MNN::Tensor> expectTensor(new MNN::Tensor(ntensor, outDimType));
254 bool copyRes = ntensor->copyToHostTensor(expectTensor.get());
255 if (copyRes) {
256 ntensor = expectTensor.get();
257 }
258 std::tuple<float, float, float> data;
259 if (ntensor->getType().code == halide_type_float) {
260 data = _countTensor<float>(ntensor);
261 } else if (ntensor->getType().code == halide_type_int) {
262 if (ntensor->getType().bits == 32) {
263 data = _countTensor<int32_t>(ntensor);
264 } else if (ntensor->getType().bits == 8) {
265 data = _countTensor<int8_t>(ntensor);
266 }
267 } else if (ntensor->getType().code == halide_type_uint) {
268 if (ntensor->getType().bits == 32) {
269 data = _countTensor<uint32_t>(ntensor);
270 } else if (ntensor->getType().bits == 8) {
271 data = _countTensor<uint8_t>(ntensor);
272 }
273 }
274 return std::make_pair(valid, data);
275}
276static void _initTensorStatic() {
277 MNN::TensorCallBackWithInfo beforeCallBack = [&](const std::vector<MNN::Tensor*>& ntensors, const MNN::OperatorInfo* info) {
278 auto opName = info->name();

Callers 1

_initTensorStaticFunction · 0.85

Calls 4

getDimensionTypeMethod · 0.80
copyToHostTensorMethod · 0.80
getTypeMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected