This commit introduces 'nnkit::Backend' and 'nnkit::BackendFactory'
interfaces which abstracts various NN frameworks.
Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
add_subdirectory(tensor)
add_subdirectory(cmdline)
+add_subdirectory(backend)
--- /dev/null
+add_library(nnkit_intf_backend INTERFACE)
+target_include_directories(nnkit_intf_backend INTERFACE include)
+target_link_libraries(nnkit_intf_backend INTERFACE nnkit_intf_tensor)
+target_link_libraries(nnkit_intf_backend INTERFACE nnkit_intf_cmdline)
--- /dev/null
+#ifndef __NNKIT_BACKEND_H__
+#define __NNKIT_BACKEND_H__
+
+#include <nnkit/TensorContext.h>
+
+#include <functional>
+
+namespace nnkit
+{
+
+struct Backend
+{
+ virtual ~Backend() = default;
+
+ virtual void prepare(const std::function<void (TensorContext &)> &f) = 0;
+ virtual void run(void) = 0;
+ virtual void teardown(const std::function<void (TensorContext &)> &f) = 0;
+};
+
+} // namespace nnkit
+
+#endif // __NNKIT_BACKEND_H__
--- /dev/null
+#ifndef __NNKIT_BACKEND_FACTORY_H__
+#define __NNKIT_BACKEND_FACTORY_H__
+
+#include "Backend.h"
+
+#include <nnkit/CmdlineArguments.h>
+
+#include <memory>
+
+namespace nnkit
+{
+
+struct BackendFactory
+{
+ virtual ~BackendFactory() = default;
+
+ virtual std::unique_ptr<Backend> make(const CmdlineArguments &args) const = 0;
+};
+
+} // namesapce nnkit
+
+#endif // __NNKIT_BACKEND_FACTORY_H__