• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef LITE_MINDIR_MEMORY_MANAGER_H
2 #define LITE_MINDIR_MEMORY_MANAGER_H
3 #include <memory>
4 #include <vector>
5 #include <map>
6 #include <mutex>
7 #include "include/errorcode.h"
8 #include "schema/model_generated.h"
9 #include "mindir_lite_graph.h"
10 // using namespace OHOS::HDI::Nnrt::V1_0;
11 
12 namespace mindspore {
13 namespace lite {
14 class MindIRMemoryManager {
15  public:
16   static MindIRMemoryManager *GetInstance();
17   ~MindIRMemoryManager() = default;
18   void *CreateTensorFromBuilder(flatbuffers::FlatBufferBuilder &fbb_new, schema::Tensor *tensor);
19   void DeleteTensor(schema::Tensor *tensor);
20   void *CreatePrimitiveFromBuilder(flatbuffers::FlatBufferBuilder &fbb_new, schema::Primitive *primitive);
21   void DeletePrimitive(schema::Primitive *primitive);
22   void ClearAllMemory();
23 
24  private:
25   MindIRMemoryManager() = default;
26   static void *CopyFbbToNewMemory(flatbuffers::FlatBufferBuilder &fbb_new);
27   std::map<schema::Primitive *, PrimitivePtr> primitive_map;
28   std::map<schema::Tensor *, TensorPtr> tensor_map;
29   std::mutex mutex;
30 };
31 }  // namespace lite
32 }  // namespace mindspore
33 #endif  // LITE_MINDIR_MEMORY_MANAGER_H
34