Browse Source

[MSLITE] frame package size

tags/v1.1.0
ling 5 years ago
parent
commit
14440f9ddf
2 changed files with 20 additions and 2 deletions
  1. +16
    -1
      mindspore/lite/src/kernel_registry.cc
  2. +4
    -1
      mindspore/lite/src/kernel_registry.h

+ 16
- 1
mindspore/lite/src/kernel_registry.cc View File

@@ -31,6 +31,14 @@ using mindspore::kernel::KernelKey;
namespace mindspore::lite { namespace mindspore::lite {
KernelRegistry *KernelRegistry::GetInstance() { KernelRegistry *KernelRegistry::GetInstance() {
static KernelRegistry instance; static KernelRegistry instance;

std::unique_lock<std::mutex> malloc_creator_array(instance.lock_);
if (instance.creator_arrays_ == nullptr) {
instance.creator_arrays_ = reinterpret_cast<KernelCreator *>(malloc(array_size_ * sizeof(KernelRegistry)));
if (instance.creator_arrays_ == nullptr) {
return nullptr;
}
}
return &instance; return &instance;
} }


@@ -127,5 +135,12 @@ kernel::LiteKernel *KernelRegistry::GetKernel(const std::vector<Tensor *> &in_te
return nullptr; return nullptr;
} }


KernelRegistry::~KernelRegistry() = default;
KernelRegistry::~KernelRegistry() {
KernelRegistry *instance = GetInstance();
std::unique_lock<std::mutex> malloc_creator_array(instance->lock_);
if (instance->creator_arrays_ != nullptr) {
free(instance->creator_arrays_);
instance->creator_arrays_ = nullptr;
}
}
} // namespace mindspore::lite } // namespace mindspore::lite

+ 4
- 1
mindspore/lite/src/kernel_registry.h View File

@@ -50,7 +50,10 @@ class KernelRegistry {
static const int data_type_length_{kNumberTypeEnd - kNumberTypeBegin + 1}; static const int data_type_length_{kNumberTypeEnd - kNumberTypeBegin + 1};
static const int op_type_length_{PrimitiveType_MAX - PrimitiveType_MIN + 1}; static const int op_type_length_{PrimitiveType_MAX - PrimitiveType_MIN + 1};
static const int array_size_{device_type_length_ * data_type_length_ * op_type_length_}; static const int array_size_{device_type_length_ * data_type_length_ * op_type_length_};
kernel::KernelCreator creator_arrays_[array_size_] = {nullptr};
kernel::KernelCreator *creator_arrays_ = nullptr;

private:
std::mutex lock_;
}; };


class KernelRegistrar { class KernelRegistrar {


Loading…
Cancel
Save