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