[CAPI] Implement model save load accepted/tizen/unified/20210829.234903 submit/tizen/20210827.122527
authorJihoon Lee <jhoon.it.lee@samsung.com>
Fri, 27 Aug 2021 11:44:57 +0000 (20:44 +0900)
committerJijoong Moon <jijoong.moon@samsung.com>
Fri, 27 Aug 2021 12:16:29 +0000 (21:16 +0900)
this patch implements model save load in capi.

**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped

Signed-off-by: Jihoon Lee <jhoon.it.lee@samsung.com>
api/capi/src/nntrainer.cpp

index 04de104ee51f87ec44c280de6978171c66789943..080f22c05e0e812d6fa1d8ca983799bed30aa05c 100644 (file)
@@ -1126,6 +1126,50 @@ int ml_train_model_get_output_tensors_info(ml_train_model_h model,
   return status;
 }
 
+int ml_train_model_save(ml_train_model_h model, const char *file_path,
+                        ml_train_model_format_e format) {
+  int status = ML_ERROR_NONE;
+  ml_train_model *nnmodel;
+  std::shared_ptr<ml::train::Model> m;
+
+  {
+    ML_TRAIN_GET_VALID_MODEL_LOCKED(nnmodel, model);
+    ML_TRAIN_ADOPT_LOCK(nnmodel, model_lock);
+
+    m = nnmodel->model;
+  }
+
+  returnable f = [&]() {
+    m->save(file_path, static_cast<ml::train::ModelFormat>(format));
+    return ML_ERROR_NONE;
+  };
+
+  status = nntrainer_exception_boundary(f);
+  return status;
+}
+
+int ml_train_model_load(ml_train_model_h model, const char *file_path,
+                        ml_train_model_format_e format) {
+  int status = ML_ERROR_NONE;
+  ml_train_model *nnmodel;
+  std::shared_ptr<ml::train::Model> m;
+
+  {
+    ML_TRAIN_GET_VALID_MODEL_LOCKED(nnmodel, model);
+    ML_TRAIN_ADOPT_LOCK(nnmodel, model_lock);
+
+    m = nnmodel->model;
+  }
+
+  returnable f = [&]() {
+    m->load(file_path, static_cast<ml::train::ModelFormat>(format));
+    return ML_ERROR_NONE;
+  };
+
+  status = nntrainer_exception_boundary(f);
+  return status;
+}
+
 #ifdef __cplusplus
 }
 #endif