diff --git a/src/Layer.hpp b/src/Layer.hpp index 282b30b6..8792c432 100644 --- a/src/Layer.hpp +++ b/src/Layer.hpp @@ -239,23 +239,25 @@ class Layer { break; } } - for (auto input_tensor : input_tensors) { - if ((activation_tensors_num.find(input_tensor->name()) != activation_tensors_num.end())) { - switch (Tensor::tensor_status) { - case TENSOR_STATIC_INIT: { - activation_tensors_num[input_tensor->name()] += 1; - break; - } - case TENSOR_STATIC_READY: { - activation_tensors_num[input_tensor->name()] -= 1; - break; - } - default: { - } - } - if (activation_tensors_num[input_tensor->name()] == 0 && activation_tensors[input_tensor->name()]->sequence() > 1) { - activation_tensors[input_tensor->name()]->dealloc(); - // std::cout << input_tensor->name() << "|" << std::endl; + if (Backend::global_backends.size() == 1) { + for (auto input_tensor : input_tensors) { + if ((activation_tensors_num.find(input_tensor->name()) != activation_tensors_num.end())) { + switch (Tensor::tensor_status) { + case TENSOR_STATIC_INIT: { + activation_tensors_num[input_tensor->name()] += 1; + break; + } + case TENSOR_STATIC_READY: { + activation_tensors_num[input_tensor->name()] -= 1; + break; + } + default: { + } + } + if (activation_tensors_num[input_tensor->name()] == 0 && activation_tensors[input_tensor->name()]->sequence() > 1) { + activation_tensors[input_tensor->name()]->dealloc(); + // std::cout << input_tensor->name() << "|" << std::endl; + } } } } diff --git a/src/Tensor.cpp b/src/Tensor.cpp index 98614349..db6b26ae 100644 --- a/src/Tensor.cpp +++ b/src/Tensor.cpp @@ -202,23 +202,25 @@ Tensor &Tensor::getFunc(const std::string &suffix, const TensorFuncType type, default: { } } - for (auto input_tensor : tensorPtrs) { - if (activation_tensors_num.find(input_tensor->name()) != activation_tensors_num.end()) { - switch (Tensor::tensor_status) { - case TENSOR_STATIC_INIT: { - activation_tensors_num[input_tensor->name()] += 1; - break; - } - case TENSOR_STATIC_READY: { - activation_tensors_num[input_tensor->name()] -= 1; - break; - } - default: { - } - } - if (activation_tensors_num[input_tensor->name()] == 0 && module_tensors[input_tensor->name()]->sequence() > 1) { - module_tensors[input_tensor->name()]->dealloc(); - // std::cout << input_tensor->name() << " |F" << std::endl; + if (Backend::global_backends.size() == 1) { + for (auto input_tensor : tensorPtrs) { + if (activation_tensors_num.find(input_tensor->name()) != activation_tensors_num.end()) { + switch (Tensor::tensor_status) { + case TENSOR_STATIC_INIT: { + activation_tensors_num[input_tensor->name()] += 1; + break; + } + case TENSOR_STATIC_READY: { + activation_tensors_num[input_tensor->name()] -= 1; + break; + } + default: { + } + } + if (activation_tensors_num[input_tensor->name()] == 0 && module_tensors[input_tensor->name()]->sequence() > 1) { + module_tensors[input_tensor->name()]->dealloc(); + // std::cout << input_tensor->name() << " |F" << std::endl; + } } } } @@ -290,23 +292,25 @@ std::vector> Tensor::getStaticFunc(vectorname()) != activation_tensors_num.end()) { - switch (Tensor::tensor_status) { - case TENSOR_STATIC_INIT: { - activation_tensors_num[input_tensor->name()] += 1; - break; - } - case TENSOR_STATIC_READY: { - activation_tensors_num[input_tensor->name()] -= 1; - break; - } - default: { - } - } - if (activation_tensors_num[input_tensor->name()] == 0 && module_tensors[input_tensor->name()]->sequence() > 1) { - module_tensors[input_tensor->name()]->dealloc(); - // std::cout << input_tensor->name() << " |S "<< std::endl;// << out_names[0] << std::endl; + if (Backend::global_backends.size() == 1) { + for (auto input_tensor : input_tensors) { + if (activation_tensors_num.find(input_tensor->name()) != activation_tensors_num.end()) { + switch (Tensor::tensor_status) { + case TENSOR_STATIC_INIT: { + activation_tensors_num[input_tensor->name()] += 1; + break; + } + case TENSOR_STATIC_READY: { + activation_tensors_num[input_tensor->name()] -= 1; + break; + } + default: { + } + } + if (activation_tensors_num[input_tensor->name()] == 0 && module_tensors[input_tensor->name()]->sequence() > 1) { + module_tensors[input_tensor->name()]->dealloc(); + // std::cout << input_tensor->name() << " |S "<< std::endl;// << out_names[0] << std::endl; + } } } }