/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
--- /dev/null
+// 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__ */
#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
* @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
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;
}
]
tensor_headers = [
+ 'memory_data.h',
'tensor.h',
'tensor_wrap_specs.h'
]
#include <stdexcept>
#include <vector>
-#include <memory_pool.h>
+#include <memory_data.h>
#include <tensor_dim.h>
#ifdef DEBUG
return data;
}
+ /**
+ * @brief return offset
+ */
unsigned int getOffset() const { return offset; }
/**
%{_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