[memory] extract MemoryData class from memory_pool to another file
authorhyeonseok lee <hs89.lee@samsung.com>
Fri, 14 Oct 2022 12:07:52 +0000 (21:07 +0900)
committerJijoong Moon <jijoong.moon@samsung.com>
Wed, 19 Oct 2022 22:02:27 +0000 (07:02 +0900)
 - Extract MemoryData class from memory_pool.h and make memory_data.h file
 - Add doxygen

Signed-off-by: hyeonseok lee <hs89.lee@samsung.com>
debian/nntrainer-dev.install
nntrainer/tensor/memory_data.h [new file with mode: 0644]
nntrainer/tensor/memory_pool.h
nntrainer/tensor/meson.build
nntrainer/tensor/tensor.h
packaging/nntrainer.spec

index b561ab4..1d8dfb8 100644 (file)
@@ -7,6 +7,7 @@
 /usr/include/nntrainer/profiler.h
 /usr/include/nntrainer/nntr_threads.h
 # tensor headers
+/usr/include/nntrainer/memory_data.h
 /usr/include/nntrainer/tensor.h
 /usr/include/nntrainer/tensor_wrap_specs.h
 # todo: update dataset headers
diff --git a/nntrainer/tensor/memory_data.h b/nntrainer/tensor/memory_data.h
new file mode 100644 (file)
index 0000000..a3a6095
--- /dev/null
@@ -0,0 +1,115 @@
+// SPDX-License-Identifier: Apache-2.0
+/**
+ * Copyright (C) 2022 Jiho Chu <jiho.chu@samsung.com>
+ *
+ * @file   memory_data.h
+ * @date   14 Oct 2022
+ * @see    https://github.com/nnstreamer/nntrainer
+ * @author Jiho Chu <jiho.chu@samsung.com>
+ * @bug    No known bugs except for NYI items
+ * @brief  MemoryData class
+ *
+ */
+
+#ifndef __MEMORY_DATA_H__
+#define __MEMORY_DATA_H__
+
+namespace nntrainer {
+
+using MemoryDataValidateCallback = std::function<void(unsigned int)>;
+
+/**
+ * @brief  MemoryData Class
+ */
+template <typename T = float> class MemoryData {
+public:
+  /**
+   * @brief  Constructor of Memory Data
+   * @param[in] addr Memory data
+   */
+  explicit MemoryData(T *addr) :
+    valid(true),
+    id(0),
+    address(addr),
+    validate_cb([](unsigned int) {}),
+    invalidate_cb([](unsigned int) {}) {}
+
+  /**
+   * @brief  Constructor of Memory Data
+   * @param[in] mem_id validate callback.
+   * @param[in] v_cb validate callback.
+   * @param[in] i_cb invalidate callback.
+   */
+  explicit MemoryData(unsigned int mem_id, MemoryDataValidateCallback v_cb,
+                      MemoryDataValidateCallback i_cb) :
+    valid(false),
+    id(mem_id),
+    address(nullptr),
+    validate_cb(v_cb),
+    invalidate_cb(i_cb) {}
+
+  /**
+   * @brief  Deleted constructor of Memory Data
+   */
+  explicit MemoryData() = delete;
+
+  /**
+   * @brief  Constructor of MemoryData
+   */
+  explicit MemoryData(MemoryDataValidateCallback v_cb,
+                      MemoryDataValidateCallback i_cb) = delete;
+  /**
+   * @brief  Constructor of MemoryData
+   */
+  explicit MemoryData(T *addr, MemoryDataValidateCallback v_cb,
+                      MemoryDataValidateCallback i_cb) = delete;
+
+  /**
+   * @brief  Destructor of Memory Data
+   */
+  virtual ~MemoryData() = default;
+
+  /**
+   * @brief  Set address
+   */
+  void setAddr(T *addr) { address = addr; }
+
+  /**
+   * @brief  Get address
+   */
+  T *getAddr() const { return address; }
+
+  /**
+   * @brief  Validate memory data
+   */
+  void validate() {
+    if (valid)
+      return;
+    validate_cb(id);
+  }
+
+  /**
+   * @brief  Invalidate memory data
+   */
+  void invalidate() {
+    if (!valid)
+      return;
+    invalidate_cb(id);
+  }
+
+  /**
+   * @brief  Set valid
+   */
+  void setValid(bool v) { valid = v; }
+
+private:
+  bool valid;
+  unsigned int id;
+  T *address;
+  MemoryDataValidateCallback validate_cb;
+  MemoryDataValidateCallback invalidate_cb;
+};
+
+} // namespace nntrainer
+
+#endif /* __MEMORY_DATA_H__ */
index dfa0b52..f7a2d50 100644 (file)
 
 #include <functional>
 #include <memory>
-#include <memory_planner.h>
 #include <vector>
 
-namespace nntrainer {
-
-using MemoryDataValidateCallback = std::function<void(unsigned int)>;
-
-template <typename T = float> class MemoryData {
-public:
-  /**
-   * @brief  Constructor of Memory Data
-   * @param[in] addr Memory data
-   */
-  explicit MemoryData(T *addr) :
-    valid(true), id(0), address(addr), validate_cb([](unsigned int) {}), invalidate_cb([](unsigned int) {}) {}
-
-  /**
-   * @brief  Constructor of Memory Data
-   * @param[in] mem_id validate callback.
-   * @param[in] v_cb validate callback.
-   * @param[in] i_cb invalidate callback.
-   */
-  explicit MemoryData(unsigned int mem_id, MemoryDataValidateCallback v_cb, MemoryDataValidateCallback i_cb) :
-    valid(false), id(mem_id), address(nullptr), validate_cb(v_cb), invalidate_cb(i_cb) {}
-
-  /**
-   * @brief  Deleted constructor of Memory Data
-   */
-  explicit MemoryData() = delete;
-  explicit MemoryData(MemoryDataValidateCallback v_cb, MemoryDataValidateCallback i_cb) = delete;
-  explicit MemoryData(T *addr, MemoryDataValidateCallback v_cb, MemoryDataValidateCallback i_cb) = delete;
-
-  /**
-   * @brief  Destructor of Memory Data
-   */
-  virtual ~MemoryData() = default;
-
-  void setAddr(T *addr) { address = addr; }
-  T *getAddr() const { return address; }
-
-  void validate() {
-    if (valid)
-      return;
-    validate_cb(id);
-  }
-
-  void invalidate() {
-    if (!valid)
-      return;
-    invalidate_cb(id);
-  }
-
-  void setValid(bool v) { valid = v; }
+#include <memory_data.h>
+#include <memory_planner.h>
 
-private:
-  bool valid;
-  unsigned int id;
-  T *address;
-  MemoryDataValidateCallback validate_cb;
-  MemoryDataValidateCallback invalidate_cb;
-};
+namespace nntrainer {
 
 /**
  * @class   MemoryPool
@@ -112,9 +57,9 @@ public:
    * @note start_time is inclusive, but end_time is exclusive
    * @note The value of the return token starts from 1.
    */
-  virtual unsigned int requestMemory(size_t bytes, unsigned int start_time,
-                                     unsigned int end_time,
-                                     std::vector<unsigned int> exec_order = std::vector<unsigned int>());
+  virtual unsigned int requestMemory(
+    size_t bytes, unsigned int start_time, unsigned int end_time,
+    std::vector<unsigned int> exec_order = std::vector<unsigned int>());
 
   /**
    * @brief Plan the layout with memory planner
@@ -184,8 +129,19 @@ public:
   virtual bool isAllocated() const;
 
 protected:
+  /**
+   * @brief  Get memory offset
+   */
   std::vector<size_t> &getMemoryOffset() { return memory_offset; }
+
+  /**
+   * @brief  Get memory size
+   */
   std::vector<size_t> &getMemorySize() { return memory_size; }
+
+  /**
+   * @brief  Get memory execution order
+   */
   std::vector<std::vector<unsigned int>> &getMemoryExecOrder() {
     return memory_exec_order;
   }
index 1835ac2..ff8a1cc 100644 (file)
@@ -15,6 +15,7 @@ tensor_sources = [
 ]
 
 tensor_headers = [
+  'memory_data.h',
   'tensor.h',
   'tensor_wrap_specs.h'
 ]
index 4e11c37..892d16e 100644 (file)
@@ -32,7 +32,7 @@
 #include <stdexcept>
 #include <vector>
 
-#include <memory_pool.h>
+#include <memory_data.h>
 #include <tensor_dim.h>
 
 #ifdef DEBUG
@@ -1235,6 +1235,9 @@ public:
     return data;
   }
 
+  /**
+   * @brief     return offset
+   */
   unsigned int getOffset() const { return offset; }
 
   /**
index 172726a..c271ca7 100644 (file)
@@ -482,6 +482,7 @@ cp -r result %{buildroot}%{_datadir}/nntrainer/unittest/
 %{_includedir}/nntrainer/nntr_threads.h
 %{_includedir}/nntrainer/profiler.h
 # tensor headers
+%{_includedir}/nntrainer/memory_data.h
 %{_includedir}/nntrainer/tensor.h
 %{_includedir}/nntrainer/tensor_wrap_specs.h
 # @todo: update dataset headers